Alexandre Julliard : gdi32: Don't free a driver when it' s popped from the stack.

Alexandre Julliard julliard at winehq.org
Wed Sep 7 12:35:29 CDT 2011


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

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Sep  7 12:08:16 2011 +0200

gdi32: Don't free a driver when it's popped from the stack.

---

 dlls/gdi32/dc.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c
index 45bff98..286fa0e 100644
--- a/dlls/gdi32/dc.c
+++ b/dlls/gdi32/dc.c
@@ -181,7 +181,12 @@ void free_dc_ptr( DC *dc )
 {
     assert( dc->refcount == 1 );
 
-    while (dc->physDev != &dc->nulldrv) pop_dc_driver( dc, dc->physDev );
+    while (dc->physDev != &dc->nulldrv)
+    {
+        PHYSDEV physdev = dc->physDev;
+        pop_dc_driver( dc, physdev );
+        physdev->funcs->pDeleteDC( physdev );
+    }
     free_gdi_handle( dc->hSelf );
     free_dc_state( dc );
 }
@@ -266,7 +271,6 @@ void pop_dc_driver( DC * dc, PHYSDEV physdev )
     assert( physdev == dc->physDev );
     assert( physdev != &dc->nulldrv );
     dc->physDev = physdev->next;
-    physdev->funcs->pDeleteDC( physdev );
 }
 
 




More information about the wine-cvs mailing list