[PATCH 2/3] d3drm: Fix child leak.

Christian Costa titan.costa at gmail.com
Sun Oct 21 07:51:25 CDT 2012


---
 dlls/d3drm/meshbuilder.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c
index 79b5d74..180a8a9 100644
--- a/dlls/d3drm/meshbuilder.c
+++ b/dlls/d3drm/meshbuilder.c
@@ -1260,6 +1260,7 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3* iface, LPDIRECTXFILEDATA pData)
                 if (FAILED(hr))
                 {
                     hr = IDirectXFileObject_QueryInterface(child, &IID_IDirectXFileDataReference, (void **)&reference);
+                    IDirectXFileObject_Release(child);
                     if (FAILED(hr))
                         goto end;
 
@@ -1268,6 +1269,10 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3* iface, LPDIRECTXFILEDATA pData)
                     if (FAILED(hr))
                         goto end;
                 }
+                else
+                {
+                    IDirectXFileObject_Release(child);
+                }
 
                 hr = Direct3DRMMaterial_create(&material);
                 if (FAILED(hr))
@@ -1357,9 +1362,14 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3* iface, LPDIRECTXFILEDATA pData)
                 i++;
             }
             if (hr == S_OK)
+            {
+                IDirectXFileObject_Release(child);
                 WARN("Found more sub-objects than expected\n");
+            }
             else if (hr != DXFILEERR_NOMOREOBJECTS)
+            {
                 goto end;
+            }
             hr = S_OK;
         }
         else




More information about the wine-patches mailing list