Module: wine Branch: master Commit: 779c1f8049879f67077cd64be42b3f8c097a3a47 URL: http://source.winehq.org/git/wine.git/?a=commit;h=779c1f8049879f67077cd64be4...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Jun 21 12:17:33 2013 +0200
msvcrt: Don't call invalid parameter handler when string to be tokenized and context are not set in mbstok.
---
dlls/msvcr100/msvcr100.c | 6 ++++++ dlls/msvcr100/msvcr100.spec | 2 +- dlls/msvcr110/msvcr110.spec | 2 +- dlls/msvcr70/msvcr70.spec | 2 +- dlls/msvcr71/msvcr71.spec | 2 +- dlls/msvcr80/msvcr80.spec | 2 +- dlls/msvcr90/msvcr90.spec | 2 +- dlls/msvcrt/mbcs.c | 7 ++++++- include/msvcrt/mbstring.h | 1 + 9 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/dlls/msvcr100/msvcr100.c b/dlls/msvcr100/msvcr100.c index d425455..28d4d6e 100644 --- a/dlls/msvcr100/msvcr100.c +++ b/dlls/msvcr100/msvcr100.c @@ -25,6 +25,7 @@ #include "stdlib.h" #include "errno.h" #include "malloc.h" +#include "mbstring.h" #include "limits.h" #include "sys/stat.h" #include "windef.h" @@ -489,6 +490,11 @@ int CDECL MSVCR100_atoi(const char *str) return _atoi_l(str, NULL); }
+unsigned char* CDECL MSVCR100__mbstok(unsigned char *str, const unsigned char *delim) +{ + return _mbstok_l(str, delim, NULL); +} + /********************************************************************* * DllMain (MSVCR100.@) */ diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 63a0caa..8e728c1 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -1182,7 +1182,7 @@ @ stub _mbsspnp_l @ cdecl _mbsstr(str str) msvcrt._mbsstr @ stub _mbsstr_l -@ cdecl _mbstok(str str) msvcrt._mbstok +@ cdecl _mbstok(str str) MSVCR100__mbstok @ cdecl _mbstok_l(str str ptr) msvcrt._mbstok_l @ cdecl _mbstok_s(str str ptr) msvcrt._mbstok_s @ cdecl _mbstok_s_l(str str ptr ptr) msvcrt._mbstok_s_l diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index e82f100..7b43159 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -1544,7 +1544,7 @@ @ stub _mbsspnp_l @ cdecl _mbsstr(str str) msvcrt._mbsstr @ stub _mbsstr_l -@ cdecl _mbstok(str str) msvcrt._mbstok +@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt @ cdecl _mbstok_l(str str ptr) msvcrt._mbstok_l @ cdecl _mbstok_s(str str ptr) msvcrt._mbstok_s @ cdecl _mbstok_s_l(str str ptr ptr) msvcrt._mbstok_s_l diff --git a/dlls/msvcr70/msvcr70.spec b/dlls/msvcr70/msvcr70.spec index 1a33fbb..dc6dc03 100644 --- a/dlls/msvcr70/msvcr70.spec +++ b/dlls/msvcr70/msvcr70.spec @@ -468,7 +468,7 @@ @ cdecl _mbsspn(str str) msvcrt._mbsspn @ cdecl _mbsspnp(str str) msvcrt._mbsspnp @ cdecl _mbsstr(str str) msvcrt._mbsstr -@ cdecl _mbstok(str str) msvcrt._mbstok +@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt @ cdecl _mbstrlen(str) msvcrt._mbstrlen @ cdecl _mbsupr(str) msvcrt._mbsupr @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy diff --git a/dlls/msvcr71/msvcr71.spec b/dlls/msvcr71/msvcr71.spec index afdab05..3e3cf6f 100644 --- a/dlls/msvcr71/msvcr71.spec +++ b/dlls/msvcr71/msvcr71.spec @@ -463,7 +463,7 @@ @ cdecl _mbsspn(str str) msvcrt._mbsspn @ cdecl _mbsspnp(str str) msvcrt._mbsspnp @ cdecl _mbsstr(str str) msvcrt._mbsstr -@ cdecl _mbstok(str str) msvcrt._mbstok +@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt @ cdecl _mbstrlen(str) msvcrt._mbstrlen @ cdecl _mbsupr(str) msvcrt._mbsupr @ cdecl _memccpy(ptr ptr long long) msvcrt._memccpy diff --git a/dlls/msvcr80/msvcr80.spec b/dlls/msvcr80/msvcr80.spec index 521a69d..2344f0f 100644 --- a/dlls/msvcr80/msvcr80.spec +++ b/dlls/msvcr80/msvcr80.spec @@ -853,7 +853,7 @@ @ stub _mbsspnp_l @ cdecl _mbsstr(str str) msvcrt._mbsstr @ stub _mbsstr_l -@ cdecl _mbstok(str str) msvcrt._mbstok +@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt @ cdecl _mbstok_l(str str ptr) msvcrt._mbstok_l @ cdecl _mbstok_s(str str ptr) msvcrt._mbstok_s @ cdecl _mbstok_s_l(str str ptr ptr) msvcrt._mbstok_s_l diff --git a/dlls/msvcr90/msvcr90.spec b/dlls/msvcr90/msvcr90.spec index fd71ef4..e31da91 100644 --- a/dlls/msvcr90/msvcr90.spec +++ b/dlls/msvcr90/msvcr90.spec @@ -831,7 +831,7 @@ @ stub _mbsspnp_l @ cdecl _mbsstr(str str) msvcrt._mbsstr @ stub _mbsstr_l -@ cdecl _mbstok(str str) msvcrt._mbstok +@ cdecl _mbstok(str str) msvcr100._mbstok #don't forward to msvcrt @ cdecl _mbstok_l(str str ptr) msvcrt._mbstok_l @ cdecl _mbstok_s(str str ptr) msvcrt._mbstok_s @ cdecl _mbstok_s_l(str str ptr ptr) msvcrt._mbstok_s_l diff --git a/dlls/msvcrt/mbcs.c b/dlls/msvcrt/mbcs.c index b70ffa0..b25649b6 100644 --- a/dlls/msvcrt/mbcs.c +++ b/dlls/msvcrt/mbcs.c @@ -1149,7 +1149,12 @@ unsigned char* CDECL _mbstok_l(unsigned char *str, */ unsigned char* CDECL _mbstok(unsigned char *str, const unsigned char *delim) { - return _mbstok_s_l(str, delim, &msvcrt_get_thread_data()->mbstok_next, NULL); + thread_data_t *data = msvcrt_get_thread_data(); + + if(!str && !data->mbstok_next) + return NULL; + + return _mbstok_s_l(str, delim, &data->mbstok_next, NULL); }
/********************************************************************* diff --git a/include/msvcrt/mbstring.h b/include/msvcrt/mbstring.h index a4d0746..7a40f7b 100644 --- a/include/msvcrt/mbstring.h +++ b/include/msvcrt/mbstring.h @@ -102,6 +102,7 @@ size_t __cdecl _mbsspn(const unsigned char*,const unsigned char*); unsigned char* __cdecl _mbsspnp(const unsigned char*,const unsigned char*); unsigned char* __cdecl _mbsstr(const unsigned char*,const unsigned char*); unsigned char* __cdecl _mbstok(unsigned char*,const unsigned char*); +unsigned char* __cdecl _mbstok_l(unsigned char*,const unsigned char*,_locale_t); unsigned char* __cdecl _mbsupr(unsigned char*);
#ifndef _MBLEADTRAIL_DEFINED