diff --git a/panda/src/downloader/bioStreamBuf.cxx b/panda/src/downloader/bioStreamBuf.cxx index 4603af0c02..30750b00ab 100644 --- a/panda/src/downloader/bioStreamBuf.cxx +++ b/panda/src/downloader/bioStreamBuf.cxx @@ -157,6 +157,15 @@ underflow() { if (read_count != (int)num_bytes) { // Oops, we didn't read what we thought we would. if (read_count <= 0) { + // Immediately save the os error in case we screw up and do + // something that will change its value before we can output + // it. +#ifdef WIN32_VC + int os_error = WSAGetLastError(); +#else + int os_error = errno; +#endif // WIN32_VC + _is_closed = !BIO_should_retry(*_source); if (_is_closed) { downloader_cat.info() @@ -175,10 +184,10 @@ underflow() { #ifdef WIN32_VC downloader_cat.warning() - << "Windows error code: " << WSAGetLastError() << "\n"; + << "Windows error code: " << os_error << "\n"; #else downloader_cat.warning() - << "Unix error code: " << errno << "\n"; + << "Unix error code: " << os_error << "\n"; #endif // WIN32_VC } gbump(num_bytes);