changeset 3137:179f6dfcb7fe

preserve errno while ngx_free()
author Igor Sysoev <igor@sysoev.ru>
date Wed, 16 Sep 2009 13:28:20 +0000
parents 47b7b6ac433e
children a2479937dbd8
files src/os/win32/ngx_files.c
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/os/win32/ngx_files.c	Tue Sep 15 15:12:03 2009 +0000
+++ b/src/os/win32/ngx_files.c	Wed Sep 16 13:28:20 2009 +0000
@@ -18,9 +18,10 @@
 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 @@
                      NULL, create, FILE_FLAG_BACKUP_SEMANTICS, NULL);
 
     if (u != utf16) {
+        err = ngx_errno;
         ngx_free(u);
+        ngx_set_errno(err);
     }
 
     return fd;