ddraw: Fix some memory leaks

Andrew Talbot andrew.talbot at talbotville.com
Mon Sep 17 15:33:12 CDT 2007


Changelog:
    ddraw: Fix some memory leaks.

diff --git a/dlls/ddraw/ddraw.c b/dlls/ddraw/ddraw.c
index 7c6bf5f..7db4976 100644
--- a/dlls/ddraw/ddraw.c
+++ b/dlls/ddraw/ddraw.c
@@ -1950,6 +1950,7 @@ IDirectDrawImpl_CreateNewSurface(IDirect
     if(hr != D3D_OK)
     {
         ERR("IWineD3DDevice::CreateSurface failed. hr = %08x\n", hr);
+        HeapFree(GetProcessHeap(), 0, parImpl);
         return hr;
     }
 
@@ -1992,6 +1993,7 @@ IDirectDrawImpl_CreateNewSurface(IDirect
     {
         ERR("IWineD3DSurface::GetDesc failed\n");
         IDirectDrawSurface7_Release( (IDirectDrawSurface7 *) *ppSurf);
+        HeapFree(GetProcessHeap(), 0, parImpl);
         return hr;
     }
 
@@ -2057,6 +2059,7 @@ IDirectDrawImpl_CreateNewSurface(IDirect
         {
             /* No need for a trace here, wined3d does that for us */
             IDirectDrawSurface7_Release(ICOM_INTERFACE((*ppSurf), IDirectDrawSurface7));
+            HeapFree(GetProcessHeap(), 0, parImpl);
             return hr;
         }
     }
diff --git a/dlls/ddraw/direct3d.c b/dlls/ddraw/direct3d.c
index ef31046..b5932d3 100644
--- a/dlls/ddraw/direct3d.c
+++ b/dlls/ddraw/direct3d.c
@@ -851,6 +851,7 @@ IDirect3DImpl_7_CreateDevice(IDirect3D7
     {
         ERR("Failed to create an index buffer\n");
         HeapFree(GetProcessHeap(), 0, object);
+        HeapFree(GetProcessHeap(), 0, IndexBufferParent);
         LeaveCriticalSection(&ddraw_cs);
         return hr;
     }



More information about the wine-patches mailing list