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.
This commit is contained in:
Maxim Dounin 2019-10-21 19:06:12 +03:00
parent 798fcf1ab4
commit 9aa906a684

View File

@ -22,7 +22,7 @@ ngx_strerror(ngx_err_t err, u_char *errstr, size_t size)
len = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,
NULL, err, lang, (char *) errstr, size, NULL);
if (len == 0 && lang && GetLastError() == ERROR_RESOURCE_LANG_NOT_FOUND) {
if (len == 0 && lang) {
/*
* Try to use English messages first and fallback to a language,