Module: wine Branch: master Commit: f48648aeec69f74899ba2f074b60aeb0de03615b URL: https://source.winehq.org/git/wine.git/?a=commit;h=f48648aeec69f74899ba2f074...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Nov 18 16:04:09 2020 +0100
msvcrt: Use the msvcrt atoi() function internally.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msvcrt/locale.c | 52 +++++++++++++++++++++++++-------------------------- dlls/msvcrt/msvcrt.h | 1 + dlls/msvcrt/string.c | 2 +- dlls/msvcrt/undname.c | 4 ++-- 4 files changed, 30 insertions(+), 29 deletions(-)
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 37c4afcf786..32f2c9b4624 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -357,7 +357,7 @@ LCID MSVCRT_locale_to_LCID(const char *locale, unsigned short *codepage, BOOL *s locale_cp = CP_UTF8; #endif } else { - locale_cp = atoi(cp + 1); + locale_cp = MSVCRT_atoi(cp + 1); } if (!IsValidCodePage(locale_cp)) return -1; @@ -1118,7 +1118,7 @@ static MSVCRT_pthreadlocinfo create_locinfo(int category, LCID lcid[6] = { 0 }; unsigned short cp[6] = { 0 }; const char *locale_name[6] = { 0 }; - int locale_len[6] = { 0 }; + int val, locale_len[6] = { 0 }; char buf[256]; BOOL sname; #if _MSVCR_VER >= 100 @@ -1437,65 +1437,65 @@ static MSVCRT_pthreadlocinfo create_locinfo(int category, return NULL; }
- if(GetLocaleInfoA(lcid[MSVCRT_LC_MONETARY], LOCALE_IINTLCURRDIGITS - |LOCALE_NOUSEROVERRIDE, buf, 256)) - locinfo->lconv->int_frac_digits = atoi(buf); + if(GetLocaleInfoW(lcid[MSVCRT_LC_MONETARY], LOCALE_IINTLCURRDIGITS + |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) + locinfo->lconv->int_frac_digits = val; else { free_locinfo(locinfo); return NULL; }
- if(GetLocaleInfoA(lcid[MSVCRT_LC_MONETARY], LOCALE_ICURRDIGITS - |LOCALE_NOUSEROVERRIDE, buf, 256)) - locinfo->lconv->frac_digits = atoi(buf); + if(GetLocaleInfoW(lcid[MSVCRT_LC_MONETARY], LOCALE_ICURRDIGITS + |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) + locinfo->lconv->frac_digits = val; else { free_locinfo(locinfo); return NULL; }
- if(GetLocaleInfoA(lcid[MSVCRT_LC_MONETARY], LOCALE_IPOSSYMPRECEDES - |LOCALE_NOUSEROVERRIDE, buf, 256)) - locinfo->lconv->p_cs_precedes = atoi(buf); + if(GetLocaleInfoW(lcid[MSVCRT_LC_MONETARY], LOCALE_IPOSSYMPRECEDES + |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) + locinfo->lconv->p_cs_precedes = val; else { free_locinfo(locinfo); return NULL; }
- if(GetLocaleInfoA(lcid[MSVCRT_LC_MONETARY], LOCALE_IPOSSEPBYSPACE - |LOCALE_NOUSEROVERRIDE, buf, 256)) - locinfo->lconv->p_sep_by_space = atoi(buf); + if(GetLocaleInfoW(lcid[MSVCRT_LC_MONETARY], LOCALE_IPOSSEPBYSPACE + |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) + locinfo->lconv->p_sep_by_space = val; else { free_locinfo(locinfo); return NULL; }
- if(GetLocaleInfoA(lcid[MSVCRT_LC_MONETARY], LOCALE_INEGSYMPRECEDES - |LOCALE_NOUSEROVERRIDE, buf, 256)) - locinfo->lconv->n_cs_precedes = atoi(buf); + if(GetLocaleInfoW(lcid[MSVCRT_LC_MONETARY], LOCALE_INEGSYMPRECEDES + |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) + locinfo->lconv->n_cs_precedes = val; else { free_locinfo(locinfo); return NULL; }
- if(GetLocaleInfoA(lcid[MSVCRT_LC_MONETARY], LOCALE_INEGSEPBYSPACE - |LOCALE_NOUSEROVERRIDE, buf, 256)) - locinfo->lconv->n_sep_by_space = atoi(buf); + if(GetLocaleInfoW(lcid[MSVCRT_LC_MONETARY], LOCALE_INEGSEPBYSPACE + |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) + locinfo->lconv->n_sep_by_space = val; else { free_locinfo(locinfo); return NULL; }
- if(GetLocaleInfoA(lcid[MSVCRT_LC_MONETARY], LOCALE_IPOSSIGNPOSN - |LOCALE_NOUSEROVERRIDE, buf, 256)) - locinfo->lconv->p_sign_posn = atoi(buf); + if(GetLocaleInfoW(lcid[MSVCRT_LC_MONETARY], LOCALE_IPOSSIGNPOSN + |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) + locinfo->lconv->p_sign_posn = val; else { free_locinfo(locinfo); return NULL; }
- if(GetLocaleInfoA(lcid[MSVCRT_LC_MONETARY], LOCALE_INEGSIGNPOSN - |LOCALE_NOUSEROVERRIDE, buf, 256)) - locinfo->lconv->n_sign_posn = atoi(buf); + if(GetLocaleInfoW(lcid[MSVCRT_LC_MONETARY], LOCALE_INEGSIGNPOSN + |LOCALE_NOUSEROVERRIDE|LOCALE_RETURN_NUMBER, (WCHAR *)&val, 2)) + locinfo->lconv->n_sign_posn = val; else { free_locinfo(locinfo); return NULL; diff --git a/dlls/msvcrt/msvcrt.h b/dlls/msvcrt/msvcrt.h index ab5b4c13f85..7c9e3137e14 100644 --- a/dlls/msvcrt/msvcrt.h +++ b/dlls/msvcrt/msvcrt.h @@ -1072,6 +1072,7 @@ void* __cdecl MSVCRT_malloc(MSVCRT_size_t); void* __cdecl MSVCRT_calloc(MSVCRT_size_t,MSVCRT_size_t); void* __cdecl MSVCRT_realloc(void*,MSVCRT_size_t);
+int __cdecl MSVCRT_atoi(const char *str); int __cdecl MSVCRT_isalpha(int c); int __cdecl MSVCRT_isdigit(int c); int __cdecl MSVCRT_isspace(int c); diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c index 5a11eb1312b..d08687244b4 100644 --- a/dlls/msvcrt/string.c +++ b/dlls/msvcrt/string.c @@ -2441,7 +2441,7 @@ int CDECL MSVCRT_I10_OUTPUT(MSVCRT__LDOUBLE ld80, int prec, int flag, struct _I1 MSVCRT_sprintf(buf, format, d);
buf[1] = buf[0]; - data->pos = atoi(buf+prec+3); + data->pos = MSVCRT_atoi(buf+prec+3); if(buf[1] != '0') data->pos++;
diff --git a/dlls/msvcrt/undname.c b/dlls/msvcrt/undname.c index 23317f49605..8f8557dcea5 100644 --- a/dlls/msvcrt/undname.c +++ b/dlls/msvcrt/undname.c @@ -469,7 +469,7 @@ static BOOL get_modified_type(struct datatype_t *ct, struct parsed_symbol* sym,
sym->current++; if (!(n1 = get_number(sym))) return FALSE; - num = atoi(n1); + num = MSVCRT_atoi(n1);
if (str_modif[0] == ' ' && !modifier) str_modif++; @@ -1007,7 +1007,7 @@ static BOOL demangle_datatype(struct parsed_symbol* sym, struct datatype_t* ct,
sym->current++; if (!(n1 = get_number(sym))) goto done; - num = atoi(n1); + num = MSVCRT_atoi(n1);
while (num--) arr = str_printf(sym, "%s[%s]", arr, get_number(sym));