[Bug 10758] myst4 crashes during startup

wine-bugs at winehq.org wine-bugs at winehq.org
Wed Oct 1 17:27:45 CDT 2008


http://bugs.winehq.org/show_bug.cgi?id=10758


Jim Cameron <jim_24601 at btinternet.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jim_24601 at btinternet.com




--- Comment #5 from Jim Cameron <jim_24601 at btinternet.com>  2008-10-01 17:27:44 ---
It is caused by a surface being freed where it shouldn't be ... I encountered
an interesting comment within IWineD3DDeviceImpl_SetDepthStencilSurface() (file
dlls/wined3d/device.c):

/* should we be calling the parent or the wined3d surface? */

followed by an AddRef of the wined3d surface. If I change the code to get the
parent and AddRef it instead, Revelations does not crash, and I could play the
game (although it crashed on exit). That would seem to answer the original
developer's question. Of course, we'll need a conformance test to confirm.
Patch follows.

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 409c7a1..0546f00 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -6648,7 +6648,12 @@ static HRESULT WINAPI
IWineD3DDeviceImpl_SetDepthStencilS
         tmp = This->stencilBufferTarget;
         This->stencilBufferTarget = pNewZStencil;
         /* should we be calling the parent or the wined3d surface? */
-        if (NULL != This->stencilBufferTarget)
IWineD3DSurface_AddRef(This->ste
+        if (NULL != This->stencilBufferTarget)
+        {
+            IUnknown* parent;
+            IWineD3DSurface_GetParent(This->stencilBufferTarget, &parent);
+            IUnknown_AddRef(parent);
+        }
         if (NULL != tmp) IWineD3DSurface_Release(tmp);
         hr = WINED3D_OK;


-- 
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
Do not reply to this email, post in Bugzilla using the
above URL to reply.
------- You are receiving this mail because: -------
You are watching all bug changes.



More information about the wine-bugs mailing list