[PATCH] fixed potential double free

Marcus Meissner marcus at jet.franken.de
Thu Jan 24 02:21:35 CST 2008


Coverity spotted that set_window_pos() could call
free_region() on the same pointer twice.

(CID 671 and 672)

Check that they are different before freeing them twice.

Ciao, Marcus
---
 server/window.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/server/window.c b/server/window.c
index 3c067b6..39dadd0 100644
--- a/server/window.c
+++ b/server/window.c
@@ -1540,7 +1540,7 @@ static void set_window_pos( struct window *win, struct window *previous,
 
 done:
     if (old_vis_rgn) free_region( old_vis_rgn );
-    if (exposed_rgn) free_region( exposed_rgn );
+    if (exposed_rgn && (exposed_rgn!=old_vis_rgn)) free_region( exposed_rgn );
     clear_error();  /* we ignore out of memory errors once the new rects have been set */
 }
 
-- 
1.5.2.4



More information about the wine-patches mailing list