comparison src/os/win32/ngx_errno.c @ 7585:746567d633ac

Win32: improved fallback on FormatMessage() errors. FormatMessage() seems to return many errors which essentially indicate that the language in question is not available. At least the following were observed in the wild and during testing: ERROR_MUI_FILE_NOT_FOUND (15100) (ticket #1868), ERROR_RESOURCE_TYPE_NOT_FOUND (1813). While documentation says it should be ERROR_RESOURCE_LANG_NOT_FOUND (1815), this doesn't seem to be the case. As such, checking error code was removed, and as long as FormatMessage() returns an error, we now always try the default language.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 21 Oct 2019 19:06:12 +0300
parents f1a0de6eb505
children
comparison
equal deleted inserted replaced
7584:9d2ad2fb4423 7585:746567d633ac
20 } 20 }
21 21
22 len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 22 len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
23 NULL, err, lang, (char *) errstr, size, NULL); 23 NULL, err, lang, (char *) errstr, size, NULL);
24 24
25 if (len == 0 && lang && GetLastError() == ERROR_RESOURCE_LANG_NOT_FOUND) { 25 if (len == 0 && lang) {
26 26
27 /* 27 /*
28 * Try to use English messages first and fallback to a language, 28 * Try to use English messages first and fallback to a language,
29 * based on locale: non-English Windows have no English messages 29 * based on locale: non-English Windows have no English messages
30 * at all. This way allows to use English messages at least on 30 * at all. This way allows to use English messages at least on