From: Viktor Szakats Date: Mon, 1 Dec 2025 18:49:50 +0000 (+0100) Subject: windows: use `_strdup()` instead of `strdup()` where missing X-Git-Tag: rc-8_18_0-1~56 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5356bce6abab7e8e28a3d412b2fa2c55bfa62416;p=thirdparty%2Fcurl.git windows: use `_strdup()` instead of `strdup()` where missing To replace deprecated `strdup()` CRT calls with the recommended `_strdup()`. Refs: https://learn.microsoft.com/cpp/c-runtime-library/reference/strdup-wcsdup https://learn.microsoft.com/cpp/c-runtime-library/reference/strdup-wcsdup-mbsdup Closes #19794 --- diff --git a/docs/examples/block_ip.c b/docs/examples/block_ip.c index bf2193a263..5cd77cad0e 100644 --- a/docs/examples/block_ip.c +++ b/docs/examples/block_ip.c @@ -38,12 +38,6 @@ int main(void) } #else -#ifdef _MSC_VER -#ifndef _CRT_NONSTDC_NO_DEPRECATE -#define _CRT_NONSTDC_NO_DEPRECATE /* for strdup() */ -#endif -#endif - #ifdef _WIN32 #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600 #undef _WIN32_WINNT @@ -52,6 +46,7 @@ int main(void) #include #include #include +#define strdup _strdup #else #include #include diff --git a/lib/curl_setup.h b/lib/curl_setup.h index 6acac0d17a..2cc18cf414 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -91,8 +91,7 @@ #pragma warning(disable:4127) /* Avoid VS2005 and upper complaining about portable C functions. */ #ifndef _CRT_NONSTDC_NO_DEPRECATE /* mingw-w64 v2+. MS SDK ~10+/~VS2017+. */ -#define _CRT_NONSTDC_NO_DEPRECATE /* for close(), fileno(), strdup(), - unlink(), etc. */ +#define _CRT_NONSTDC_NO_DEPRECATE /* for close(), fileno(), unlink(), etc. */ #endif #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS /* for getenv(), gmtime(), strcpy(), diff --git a/lib/easy.c b/lib/easy.c index 476f63c74d..c60819fcdc 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -103,7 +103,11 @@ static curl_simple_lock s_lock = CURL_SIMPLE_LOCK_INIT; * so the callback pointer is initialized correctly. */ #ifdef HAVE_STRDUP +#ifdef _WIN32 +#define system_strdup _strdup +#else #define system_strdup strdup +#endif #else #define system_strdup Curl_strdup #endif diff --git a/tests/libtest/memptr.c b/tests/libtest/memptr.c index 400e72c41a..fe90b01a6c 100644 --- a/tests/libtest/memptr.c +++ b/tests/libtest/memptr.c @@ -36,7 +36,11 @@ curl_malloc_callback Curl_cmalloc = (curl_malloc_callback)malloc; curl_free_callback Curl_cfree = (curl_free_callback)free; curl_realloc_callback Curl_crealloc = (curl_realloc_callback)realloc; +#ifdef _WIN32 +curl_strdup_callback Curl_cstrdup = (curl_strdup_callback)_strdup; +#else curl_strdup_callback Curl_cstrdup = (curl_strdup_callback)strdup; +#endif curl_calloc_callback Curl_ccalloc = (curl_calloc_callback)calloc; #if defined(_MSC_VER) && defined(_DLL) diff --git a/tests/server/first.h b/tests/server/first.h index 2979239ad3..316a7a622e 100644 --- a/tests/server/first.h +++ b/tests/server/first.h @@ -69,6 +69,10 @@ extern const struct entry_s s_entries[]; # define snprintf _snprintf #endif +#ifdef _WIN32 +# define strdup _strdup +#endif + #ifdef _WIN32 # define CURL_STRNICMP(p1, p2, n) _strnicmp(p1, p2, n) #elif defined(HAVE_STRCASECMP)