From 6bcacff1a52df5818c2a12807de6e7ca896da508 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Fri, 19 Jul 2013 06:44:46 +0200 Subject: WIN32 MemoryTracking: require UNICODE for wide strdup code support --- lib/curl_memory.h | 13 +++++++------ lib/curl_setup.h | 4 +++- lib/easy.c | 8 ++++---- lib/memdebug.c | 2 +- lib/memdebug.h | 13 +++++++------ tests/server/getpart.c | 6 +++--- 6 files changed, 25 insertions(+), 21 deletions(-) diff --git a/lib/curl_memory.h b/lib/curl_memory.h index 4bba008c9..e3cdc721c 100644 --- a/lib/curl_memory.h +++ b/lib/curl_memory.h @@ -87,7 +87,7 @@ extern curl_free_callback Curl_cfree; extern curl_realloc_callback Curl_crealloc; extern curl_strdup_callback Curl_cstrdup; extern curl_calloc_callback Curl_ccalloc; -#ifdef WIN32 +#if defined(WIN32) && defined(UNICODE) extern curl_wcsdup_callback Curl_cwcsdup; #endif @@ -114,14 +114,15 @@ extern curl_wcsdup_callback Curl_cwcsdup; #define free(ptr) Curl_cfree(ptr) #ifdef WIN32 -# undef wcsdup -# define wcsdup(ptr) Curl_cwcsdup(ptr) -# undef _wcsdup -# define _wcsdup(ptr) Curl_cwcsdup(ptr) -# undef _tcsdup # ifdef UNICODE +# undef wcsdup +# define wcsdup(ptr) Curl_cwcsdup(ptr) +# undef _wcsdup +# define _wcsdup(ptr) Curl_cwcsdup(ptr) +# undef _tcsdup # define _tcsdup(ptr) Curl_cwcsdup(ptr) # else +# undef _tcsdup # define _tcsdup(ptr) Curl_cstrdup(ptr) # endif #endif diff --git a/lib/curl_setup.h b/lib/curl_setup.h index 3f55a5c0f..7edeca212 100644 --- a/lib/curl_setup.h +++ b/lib/curl_setup.h @@ -270,7 +270,9 @@ # endif # endif # include - typedef wchar_t *(*curl_wcsdup_callback)(const wchar_t *str); +# ifdef UNICODE + typedef wchar_t *(*curl_wcsdup_callback)(const wchar_t *str); +# endif #endif /* diff --git a/lib/easy.c b/lib/easy.c index 541e793fb..995328e1d 100644 --- a/lib/easy.c +++ b/lib/easy.c @@ -252,8 +252,8 @@ 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; -#ifdef WIN32 -curl_wcsdup_callback Curl_cwcsdup = (curl_wcsdup_callback)wcsdup; +#if defined(WIN32) && defined(UNICODE) +curl_wcsdup_callback Curl_cwcsdup = (curl_wcsdup_callback)_wcsdup; #endif #else /* @@ -286,8 +286,8 @@ CURLcode curl_global_init(long flags) Curl_crealloc = (curl_realloc_callback)realloc; Curl_cstrdup = (curl_strdup_callback)system_strdup; Curl_ccalloc = (curl_calloc_callback)calloc; -#ifdef WIN32 - Curl_cwcsdup = (curl_wcsdup_callback)wcsdup; +#if defined(WIN32) && defined(UNICODE) + Curl_cwcsdup = (curl_wcsdup_callback)_wcsdup; #endif if(flags & CURL_GLOBAL_SSL) diff --git a/lib/memdebug.c b/lib/memdebug.c index b3ddfb430..4e4f84cb2 100644 --- a/lib/memdebug.c +++ b/lib/memdebug.c @@ -239,7 +239,7 @@ char *curl_dostrdup(const char *str, int line, const char *source) return mem; } -#ifdef WIN32 +#if defined(WIN32) && defined(UNICODE) wchar_t *curl_dowcsdup(const wchar_t *str, int line, const char *source) { wchar_t *mem; diff --git a/lib/memdebug.h b/lib/memdebug.h index 955e8b72b..bd565c8dc 100644 --- a/lib/memdebug.h +++ b/lib/memdebug.h @@ -46,7 +46,7 @@ CURL_EXTERN void *curl_dorealloc(void *ptr, size_t size, int line, const char *source); CURL_EXTERN void curl_dofree(void *ptr, int line, const char *source); CURL_EXTERN char *curl_dostrdup(const char *str, int line, const char *source); -#ifdef WIN32 +#if defined(WIN32) && defined(UNICODE) CURL_EXTERN wchar_t *curl_dowcsdup(const wchar_t *str, int line, const char *source); #endif @@ -90,14 +90,15 @@ CURL_EXTERN int curl_fclose(FILE *file, int line, const char *source); #define free(ptr) curl_dofree(ptr, __LINE__, __FILE__) #ifdef WIN32 -# undef wcsdup -# define wcsdup(ptr) curl_dowcsdup(ptr, __LINE__, __FILE__) -# undef _wcsdup -# define _wcsdup(ptr) curl_dowcsdup(ptr, __LINE__, __FILE__) -# undef _tcsdup # ifdef UNICODE +# undef wcsdup +# define wcsdup(ptr) curl_dowcsdup(ptr, __LINE__, __FILE__) +# undef _wcsdup +# define _wcsdup(ptr) curl_dowcsdup(ptr, __LINE__, __FILE__) +# undef _tcsdup # define _tcsdup(ptr) curl_dowcsdup(ptr, __LINE__, __FILE__) # else +# undef _tcsdup # define _tcsdup(ptr) curl_dostrdup(ptr, __LINE__, __FILE__) # endif #endif diff --git a/tests/server/getpart.c b/tests/server/getpart.c index 188eb5dca..b00e8521e 100644 --- a/tests/server/getpart.c +++ b/tests/server/getpart.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2012, Daniel Stenberg, , et al. + * Copyright (C) 1998 - 2013, Daniel Stenberg, , et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -58,8 +58,8 @@ 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; -#ifdef WIN32 -curl_wcsdup_callback Curl_cwcsdup = (curl_wcsdup_callback)wcsdup; +#if defined(WIN32) && defined(UNICODE) +curl_wcsdup_callback Curl_cwcsdup = (curl_wcsdup_callback)_wcsdup; #endif #if defined(_MSC_VER) && defined(_DLL) -- cgit v1.2.1