Module: wine Branch: master Commit: ae91cfe380f53c29f7d91f97f4f7dcbdef288be4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=ae91cfe380f53c29f7d91f97f4... Author: Stefan Dösinger <stefan(a)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; }