diff src/os/win32/ngx_files.c @ 3137:179f6dfcb7fe

preserve errno while ngx_free()
author Igor Sysoev <igor@sysoev.ru>
date Wed, 16 Sep 2009 13:28:20 +0000
parents 63f71723cd2a
children a2479937dbd8
line wrap: on
line diff
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -18,9 +18,10 @@ static u_short *ngx_utf8_to_utf16(u_shor
 ngx_fd_t
 ngx_open_file(u_char *name, u_long mode, u_long create, u_long access)
 {
-    u_short   *u;
-    ngx_fd_t   fd;
-    u_short    utf16[NGX_UTF16_BUFLEN];
+    u_short    *u;
+    ngx_fd_t    fd;
+    ngx_err_t   err;
+    u_short     utf16[NGX_UTF16_BUFLEN];
 
     u = ngx_utf8_to_utf16(utf16, name, NGX_UTF16_BUFLEN);
 
@@ -33,7 +34,9 @@ ngx_open_file(u_char *name, u_long mode,
                      NULL, create, FILE_FLAG_BACKUP_SEMANTICS, NULL);
 
     if (u != utf16) {
+        err = ngx_errno;
         ngx_free(u);
+        ngx_set_errno(err);
     }
 
     return fd;