From 5e1d854ee50a9ad885ebd9a15f7728afa2cb0447 Mon Sep 17 00:00:00 2001 From: Christian Costa Date: Sun, 21 Oct 2012 14:51:25 +0200 Subject: [PATCH] d3drm: Fix child leak. --- dlls/d3drm/meshbuilder.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c index 79b5d74dd4b..180a8a9c18e 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