*/
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)
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;
*str++ = 0;
if (c > 255) *str++ = 0;
}
- next = str;
+ data->mbstok_next = str;
return ret;
}
return strtok(str, delim); /* ASCII CP */
{
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;