Store mbstok() next pointer in the per-thread data.
authorAlexandre Julliard <julliard@winehq.org>
Sat, 1 Feb 2003 00:59:22 +0000 (00:59 +0000)
committerAlexandre Julliard <julliard@winehq.org>
Sat, 1 Feb 2003 00:59:22 +0000 (00:59 +0000)
dlls/msvcrt/mbcs.c
dlls/msvcrt/msvcrt.h

index c64831007ea41cbfc9e4712447648de9ef8078c7..cf32988f2b3542b80de59f6870bc8f093ba5772d 100644 (file)
@@ -557,7 +557,7 @@ unsigned char* _mbsrchr(const unsigned char* s, unsigned int x)
  */
 unsigned char* _mbstok(unsigned char *str, const unsigned char *delim)
 {
-    static char *next = NULL;
+    MSVCRT_thread_data *data = msvcrt_get_thread_data();
     char *ret;
 
     if(MSVCRT___mb_cur_max > 1)
@@ -565,7 +565,7 @@ unsigned char* _mbstok(unsigned char *str, const unsigned char *delim)
        unsigned int c;
 
        if (!str)
-           if (!(str = next)) return NULL;
+           if (!(str = data->mbstok_next)) return NULL;
 
        while ((c = _mbsnextc(str)) && _mbschr(delim, c)) {
            str += c > 255 ? 2 : 1;
@@ -579,7 +579,7 @@ unsigned char* _mbstok(unsigned char *str, const unsigned char *delim)
            *str++ = 0;
            if (c > 255) *str++ = 0;
        }
-       next = str;
+       data->mbstok_next = str;
        return ret;
     }
     return strtok(str, delim); /* ASCII CP */
index c04ec9d619403d2ef115e868bfc6dedf66a578ea..7985bb85327a7e15157cbdb365369bb460bae365 100644 (file)
@@ -38,6 +38,7 @@ typedef struct __MSVCRT_thread_data
 {
     int                      errno;
     unsigned long            doserrno;
+    char                    *mbstok_next;        /* next ptr for mbstok() */
     terminate_function       terminate_handler;
     unexpected_function      unexpected_handler;
     _se_translator_function  se_translator;