Stefan Dösinger : ddraw: SetClipper refcounting fix.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 19 07:02:18 CST 2007


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Fri Feb 16 19:08:21 2007 +0100

ddraw: SetClipper refcounting fix.

---

 dlls/ddraw/surface.c |    7 ++++---
 1 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/dlls/ddraw/surface.c b/dlls/ddraw/surface.c
index a84b08f..cd35832 100644
--- a/dlls/ddraw/surface.c
+++ b/dlls/ddraw/surface.c
@@ -1882,17 +1882,18 @@ IDirectDrawSurfaceImpl_SetClipper(IDirectDrawSurface7 *iface,
                                   IDirectDrawClipper *Clipper)
 {
     ICOM_THIS_FROM(IDirectDrawSurfaceImpl, IDirectDrawSurface7, iface);
+    IDirectDrawClipperImpl *oldClipper = This->clipper;
 
     TRACE("(%p)->(%p)\n",This,Clipper);
     if (ICOM_OBJECT(IDirectDrawClipperImpl, IDirectDrawClipper, Clipper) == This->clipper)
         return DD_OK;
 
-    if (This->clipper != NULL)
-        IDirectDrawClipper_Release(ICOM_INTERFACE(This->clipper, IDirectDrawClipper) );
-
     This->clipper = ICOM_OBJECT(IDirectDrawClipperImpl, IDirectDrawClipper, Clipper);
+
     if (Clipper != NULL)
         IDirectDrawClipper_AddRef(Clipper);
+    if(oldClipper)
+        IDirectDrawClipper_Release(ICOM_INTERFACE(oldClipper, IDirectDrawClipper));
 
     return DD_OK;
 }




More information about the wine-cvs mailing list