From 9a63a25b9d2dc55d01b36863225b67daa2467bc6 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 7 Sep 2011 12:08:16 +0200 Subject: [PATCH] gdi32: Don't free a driver when it's popped from the stack. --- dlls/gdi32/dc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index 45bff986ed0..286fa0e9a26 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 ); }