Module: wine Branch: master Commit: f93f31dec58affa33d770a163490e760ed9991ee URL: https://gitlab.winehq.org/wine/wine/-/commit/f93f31dec58affa33d770a163490e76...
Author: Piotr Caban piotr@codeweavers.com Date: Fri Jul 21 16:48:13 2023 +0200
msvcrt: Improve locale_to_sname error handling.
---
dlls/msvcrt/locale.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-)
diff --git a/dlls/msvcrt/locale.c b/dlls/msvcrt/locale.c index 7e94d7bf2a8..854ec6e7158 100644 --- a/dlls/msvcrt/locale.c +++ b/dlls/msvcrt/locale.c @@ -1333,22 +1333,16 @@ static pthreadlocinfo create_locinfo(int category, memcpy(buf, locale, p-locale); buf[p-locale] = '\0'; locale_found = locale_to_sname(buf, &cp[i], &sname_match, wbuf, LOCALE_NAME_MAX_LENGTH); - locale_sname[i] = wcsdup(wbuf); - if(sname_match) { - locale_name[i] = locale; - locale_len[i] = p-locale; - } } else { locale_found = locale_to_sname(locale, &cp[i], &sname_match, wbuf, LOCALE_NAME_MAX_LENGTH); - locale_sname[i] = wcsdup(wbuf); - if(sname_match) { - locale_name[i] = locale; - locale_len[i] = strlen(locale); - } }
- if(!locale_found || !locale_sname[i]) + if(!locale_found || !(locale_sname[i] = wcsdup(wbuf))) goto fail; + if(sname_match) { + locale_name[i] = locale; + locale_len[i] = p ? p-locale : strlen(locale); + } }
if(!p || *(p+1)!='L' || *(p+2)!='C' || *(p+3)!='_')