Alexandre Julliard : ntdll: Also release memory past the last view in remove_reserved_area.

Alexandre Julliard julliard at winehq.org
Wed Sep 13 14:47:03 CDT 2017


Module: wine
Branch: master
Commit: 3f0362ec3c38d4723c7a8b51eb0cb79f437f1093
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3f0362ec3c38d4723c7a8b51eb0cb79f437f1093

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Sep 13 10:11:54 2017 +0200

ntdll: Also release memory past the last view in remove_reserved_area.

Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/ntdll/virtual.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index ce24698..b08bde7 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -544,17 +544,14 @@ static void remove_reserved_area( void *addr, size_t size )
     /* unmap areas not covered by an existing view */
     WINE_RB_FOR_EACH_ENTRY( view, &views_tree, struct file_view, entry )
     {
-        if ((char *)view->base >= (char *)addr + size)
-        {
-            munmap( addr, size );
-            break;
-        }
+        if ((char *)view->base >= (char *)addr + size) break;
         if ((char *)view->base + view->size <= (char *)addr) continue;
         if (view->base > addr) munmap( addr, (char *)view->base - (char *)addr );
-        if ((char *)view->base + view->size > (char *)addr + size) break;
+        if ((char *)view->base + view->size > (char *)addr + size) return;
         size = (char *)addr + size - ((char *)view->base + view->size);
         addr = (char *)view->base + view->size;
     }
+    munmap( addr, size );
 }
 
 




More information about the wine-cvs mailing list