]> git.kaiwu.me - nginx.git/commitdiff
Win32: improved fallback on FormatMessage() errors.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 21 Oct 2019 16:06:12 +0000 (19:06 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 21 Oct 2019 16:06:12 +0000 (19:06 +0300)
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.

src/os/win32/ngx_errno.c

index b732bf4b19dd2d585f4b645fb0782384ebb78c82..966d3def242a4e90c463e5466123af5cbea816ec 100644 (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,