]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
windows: drop redundant `curl_wcsdup_callback` callback
authorViktor Szakats <commit@vsz.me>
Mon, 7 Jul 2025 09:46:26 +0000 (11:46 +0200)
committerViktor Szakats <commit@vsz.me>
Tue, 8 Jul 2025 11:33:38 +0000 (13:33 +0200)
This callback was permanently mapped to libcurl's internal
`Curl_wcsdup()`, which always uses the customizable malloc for
allocation, thus making a custom mapping redundant anyway.

To simplify, drop the callback and map `_tcsdup()` in Unicode mode
directly to `Curl_wcsdup()`.

Also fixes:
- `curl_global_init()` which, before this patch, (re)initialized its
  mapping to `_wcsdup()`, returning buffers potentially incompatible
  with a custom allocator.
  Bug: https://github.com/curl/curl/pull/17840#issuecomment-3044361245
  Bug: https://github.com/curl/curl/pull/7540#issuecomment-2380995349
Co-reported-by: Luca Kellermann
Follow-up to 76e047fc27b3a0b9e6d6d00cacf536e7b7c1b532 #7540
Assisted-by: Jay Satiro
Closes #17843

lib/curl_memory.h
lib/curl_sspi.c
lib/easy.c
lib/setup-win32.h
lib/vauth/vauth.c
lib/vtls/schannel.c
tests/libtest/memptr.c
tests/server/memptr.c

index d0ea7f7ff7ea03dc49a01551373816b8199d2955..b4536c1b3f815b10d90805fc6b209a2798981812 100644 (file)
@@ -121,9 +121,6 @@ extern curl_free_callback Curl_cfree;
 extern curl_realloc_callback Curl_crealloc;
 extern curl_strdup_callback Curl_cstrdup;
 extern curl_calloc_callback Curl_ccalloc;
-#if defined(_WIN32) && defined(UNICODE)
-extern curl_wcsdup_callback Curl_cwcsdup;
-#endif
 
 #ifndef CURLDEBUG
 
@@ -150,7 +147,7 @@ extern curl_wcsdup_callback Curl_cwcsdup;
 #ifdef _WIN32
 #undef _tcsdup
 #ifdef UNICODE
-#define _tcsdup(ptr) Curl_cwcsdup(ptr)
+#define _tcsdup(ptr) Curl_wcsdup(ptr)
 #else
 #define _tcsdup(ptr) Curl_cstrdup(ptr)
 #endif
index 03ef4cf61c2566feed26bdeed038ddb9bd84f48e..5f19e960b9be376d3edb486226a7f8de7f991f6c 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <curl/curl.h>
 #include "curl_sspi.h"
+#include "strdup.h"
 #include "curlx/multibyte.h"
 #include "system_win32.h"
 #include "curlx/version_win32.h"
index 99cbd970ea42fc4eb3f63ebc119e263c07f4618c..9c1f1c6969b31d88dc741559d209e244474f7b5c 100644 (file)
@@ -129,9 +129,6 @@ curl_free_callback Curl_cfree = (curl_free_callback)free;
 curl_realloc_callback Curl_crealloc = (curl_realloc_callback)realloc;
 curl_strdup_callback Curl_cstrdup = (curl_strdup_callback)system_strdup;
 curl_calloc_callback Curl_ccalloc = (curl_calloc_callback)calloc;
-#if defined(_WIN32) && defined(UNICODE)
-curl_wcsdup_callback Curl_cwcsdup = Curl_wcsdup;
-#endif
 
 #if defined(_MSC_VER) && defined(_DLL)
 #  pragma warning(pop)
@@ -157,9 +154,6 @@ static CURLcode global_init(long flags, bool memoryfuncs)
     Curl_crealloc = (curl_realloc_callback)realloc;
     Curl_cstrdup = (curl_strdup_callback)system_strdup;
     Curl_ccalloc = (curl_calloc_callback)calloc;
-#if defined(_WIN32) && defined(UNICODE)
-    Curl_cwcsdup = (curl_wcsdup_callback)_wcsdup;
-#endif
   }
 
   if(Curl_trc_init()) {
index f95eacf62be8937aa276012d5af55429d983b9fe..02177a7a3b7b1c37d7496d25f47adddb3c5caee3 100644 (file)
@@ -82,9 +82,6 @@
 #  include <windows.h>
 #  include <winerror.h>
 #  include <tchar.h>
-#  ifdef UNICODE
-     typedef wchar_t *(*curl_wcsdup_callback)(const wchar_t *str);
-#  endif
 #endif
 
 /*
index d60991995dfda6b868a7e5969b0054e9448af6cd..7a85b7041f6deee333258aaba35c898c8e6153ec 100644 (file)
@@ -27,6 +27,7 @@
 #include <curl/curl.h>
 
 #include "vauth.h"
+#include "../strdup.h"
 #include "../urldata.h"
 #include "../curlx/multibyte.h"
 #include "../curl_printf.h"
index f1edc2791ca0999426d1819046e6fc44ff23d9b3..2ac61ba7946fcd4564ac21031a43419301f34129 100644 (file)
@@ -44,6 +44,7 @@
 #include "vtls_scache.h"
 #include "../sendf.h"
 #include "../connect.h" /* for the connect timeout */
+#include "../strdup.h"
 #include "../strerror.h"
 #include "../select.h" /* for the socket readiness */
 #include "../curlx/inet_pton.h" /* for IP addr SNI check */
index ab72aa7725743d5dbb9913a3f2565fdad45ab6a9..64e9fd7f8a1ab65d66ad29354e5dd726a4204ce3 100644 (file)
@@ -40,9 +40,6 @@ curl_free_callback Curl_cfree = (curl_free_callback)free;
 curl_realloc_callback Curl_crealloc = (curl_realloc_callback)realloc;
 curl_strdup_callback Curl_cstrdup = (curl_strdup_callback)strdup;
 curl_calloc_callback Curl_ccalloc = (curl_calloc_callback)calloc;
-#if defined(_WIN32) && defined(UNICODE)
-curl_wcsdup_callback Curl_cwcsdup = wcsdup;
-#endif
 
 #if defined(_MSC_VER) && defined(_DLL)
 #  pragma warning(pop)
index 96187e5bf6a3f3209b9b562dfd34510842b577f5..247bbf13ab819f24c85182479940a9fcf7eabc17 100644 (file)
@@ -41,9 +41,6 @@ curl_free_callback Curl_cfree = (curl_free_callback)free;
 curl_realloc_callback Curl_crealloc = (curl_realloc_callback)realloc;
 curl_strdup_callback Curl_cstrdup = (curl_strdup_callback)system_strdup;
 curl_calloc_callback Curl_ccalloc = (curl_calloc_callback)calloc;
-#if defined(_WIN32) && defined(UNICODE)
-curl_wcsdup_callback Curl_cwcsdup = NULL; /* not used in test code */
-#endif
 
 #if defined(_MSC_VER) && defined(_DLL)
 #  pragma warning(pop)