Piotr Caban (@piotr) commented about dlls/msvcrt/locale.c:
if (search.allow_sname && IsValidLocaleName(search.search_language)) { search.match_flags = FOUND_SNAME;
wcsncpy(sname, search.search_language, sname_size);
if (sname_size < wcslen(search.search_language) + 1)
return FALSE;
wcscpy(sname, search.search_language);
Isn't it better to remove sname_size parameter and assume that passed buffer length is LOCALE_NAME_MAX_LENGTH? The size checks should not be needed since locale name always fits into LOCALE_NAME_MAX_LENGTH buffer.