Henri Verbeet : d3drm: Release the child object after we' re done with it in load_mesh_data() (Valgrind).
Module: wine Branch: master Commit: 23f0e97071db775778109dc0d6258c324bd225b1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=23f0e97071db775778109dc0d6... Author: Henri Verbeet <hverbeet(a)codeweavers.com> Date: Thu Apr 30 16:46:41 2015 +0200 d3drm: Release the child object after we're done with it in load_mesh_data() (Valgrind). --- dlls/d3drm/meshbuilder.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/dlls/d3drm/meshbuilder.c b/dlls/d3drm/meshbuilder.c index e4d6d86..c24d9dc 100644 --- a/dlls/d3drm/meshbuilder.c +++ b/dlls/d3drm/meshbuilder.c @@ -1250,20 +1250,21 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *pData, IDirectXFileData *data; char **filename; - hr = IDirectXFileObject_QueryInterface(material_child, &IID_IDirectXFileData, (void **)&data); - if (FAILED(hr)) + if (FAILED(hr = IDirectXFileObject_QueryInterface(material_child, + &IID_IDirectXFileData, (void **)&data))) { IDirectXFileDataReference *reference; - hr = IDirectXFileObject_QueryInterface(material_child, &IID_IDirectXFileDataReference, (void **)&reference); - if (FAILED(hr)) - goto end; - - hr = IDirectXFileDataReference_Resolve(reference, &data); - IDirectXFileDataReference_Release(reference); - if (FAILED(hr)) - goto end; + if (SUCCEEDED(IDirectXFileObject_QueryInterface(material_child, + &IID_IDirectXFileDataReference, (void **)&reference))) + { + hr = IDirectXFileDataReference_Resolve(reference, &data); + IDirectXFileDataReference_Release(reference); + } } + IDirectXFileObject_Release(material_child); + if (FAILED(hr)) + goto end; hr = IDirectXFileData_GetType(data, &guid); if (hr != DXFILE_OK) @@ -1308,6 +1309,7 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *pData, } } } + IDirectXFileData_Release(data); } else if (hr != DXFILEERR_NOMOREOBJECTS) {
participants (1)
-
Alexandre Julliard