Module: wine Branch: master Commit: 9a63a25b9d2dc55d01b36863225b67daa2467bc6 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9a63a25b9d2dc55d01b3686322...
Author: Alexandre Julliard julliard@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 ); }