From: Viktor Szakats Date: Fri, 9 May 2025 13:18:51 +0000 (+0200) Subject: windows: fix to preserve error code in `curlx_winapi_strerror()` X-Git-Tag: curl-8_14_0~120 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1499319442b98ba344bf15d055ca53e1ba1ec02b;p=thirdparty%2Fcurl.git windows: fix to preserve error code in `curlx_winapi_strerror()` Drop the interim macro `PRESERVE_WINDOWS_ERROR_CODE` and always preserve error code for `_WIN32`. To make sure this is always done in `curlx_winapi_strerror()`. Follow-up to c74d3e10d2935a9a37ffe6b2f7a4ecb0f81e974f #17299 Closes #17302 --- diff --git a/lib/curlx/winapi.c b/lib/curlx/winapi.c index e79024c69a..6069424bec 100644 --- a/lib/curlx/winapi.c +++ b/lib/curlx/winapi.c @@ -90,7 +90,7 @@ const char *curlx_get_winapi_error(int err, char *buf, size_t buflen) const char *curlx_winapi_strerror(DWORD err, char *buf, size_t buflen) { -#ifdef PRESERVE_WINDOWS_ERROR_CODE +#ifdef _WIN32 DWORD old_win_err = GetLastError(); #endif int old_errno = errno; @@ -125,7 +125,7 @@ const char *curlx_winapi_strerror(DWORD err, char *buf, size_t buflen) if(errno != old_errno) CURL_SETERRNO(old_errno); -#ifdef PRESERVE_WINDOWS_ERROR_CODE +#ifdef _WIN32 if(old_win_err != GetLastError()) SetLastError(old_win_err); #endif diff --git a/lib/strerror.c b/lib/strerror.c index 0c440136d0..9cf93dd66e 100644 --- a/lib/strerror.c +++ b/lib/strerror.c @@ -49,10 +49,6 @@ #include "curl_memory.h" #include "memdebug.h" -#ifdef _WIN32 -#define PRESERVE_WINDOWS_ERROR_CODE -#endif - const char * curl_easy_strerror(CURLcode error) { @@ -804,7 +800,7 @@ get_winsock_error(int err, char *buf, size_t len) */ const char *Curl_strerror(int err, char *buf, size_t buflen) { -#ifdef PRESERVE_WINDOWS_ERROR_CODE +#ifdef _WIN32 DWORD old_win_err = GetLastError(); #endif int old_errno = errno; @@ -884,7 +880,7 @@ const char *Curl_strerror(int err, char *buf, size_t buflen) if(errno != old_errno) CURL_SETERRNO(old_errno); -#ifdef PRESERVE_WINDOWS_ERROR_CODE +#ifdef _WIN32 if(old_win_err != GetLastError()) SetLastError(old_win_err); #endif @@ -899,7 +895,7 @@ const char *Curl_strerror(int err, char *buf, size_t buflen) */ const char *Curl_sspi_strerror(int err, char *buf, size_t buflen) { -#ifdef PRESERVE_WINDOWS_ERROR_CODE +#ifdef _WIN32 DWORD old_win_err = GetLastError(); #endif int old_errno = errno; @@ -1032,7 +1028,7 @@ const char *Curl_sspi_strerror(int err, char *buf, size_t buflen) if(errno != old_errno) CURL_SETERRNO(old_errno); -#ifdef PRESERVE_WINDOWS_ERROR_CODE +#ifdef _WIN32 if(old_win_err != GetLastError()) SetLastError(old_win_err); #endif