Avoid double checking free type flags in NtFreeVirtualMemory

Dmitry Timoshkov dmitry at baikal.ru
Wed Feb 11 00:01:41 CST 2004


Hello,

Changelog:
    Dmitry Timoshkov <dmitry at codeweavers.com>
    Avoid double checking free type flags in NtFreeVirtualMemory.

--- cvs/hq/wine/dlls/ntdll/virtual.c	2004-02-11 11:35:18.000000000 +0800
+++ wine/dlls/ntdll/virtual.c	2004-02-11 11:37:27.000000000 +0800
@@ -1130,20 +1130,14 @@ NTSTATUS WINAPI NtFreeVirtualMemory( HAN
         return STATUS_SUCCESS;
     }
 
-    if ((type != MEM_DECOMMIT) && (type != MEM_RELEASE))
-    {
-        WARN("called with wrong free type flags (%08lx) !\n", type);
-        return STATUS_INVALID_PARAMETER;
-    }
-
-    /* Free the pages */
-
     if (type == MEM_RELEASE)
     {
+        /* Free the pages */
+
         if (size || (base != view->base)) return STATUS_INVALID_PARAMETER;
         VIRTUAL_DeleteView( view );
     }
-    else
+    else if (type == MEM_DECOMMIT)
     {
         /* Decommit the pages by remapping zero-pages instead */
 
@@ -1151,6 +1145,11 @@ NTSTATUS WINAPI NtFreeVirtualMemory( HAN
             ERR( "Could not remap pages, expect trouble\n" );
         if (!VIRTUAL_SetProt( view, base, size, 0 )) return STATUS_ACCESS_DENIED;  /* FIXME */
     }
+    else
+    {
+        WARN("called with wrong free type flags (%08lx) !\n", type);
+        return STATUS_INVALID_PARAMETER;
+    }
 
     *addr_ptr = base;
     *size_ptr = size;






More information about the wine-patches mailing list