d3drm: Release the child object after we're done with it in load_mesh_data() (Valgrind).

This commit is contained in:
Henri Verbeet 2015-04-30 16:46:41 +02:00 committed by Alexandre Julliard
parent 90239052ab
commit 23f0e97071
1 changed files with 12 additions and 10 deletions

View File

@ -1250,20 +1250,21 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *pData,
IDirectXFileData *data; IDirectXFileData *data;
char **filename; char **filename;
hr = IDirectXFileObject_QueryInterface(material_child, &IID_IDirectXFileData, (void **)&data); if (FAILED(hr = IDirectXFileObject_QueryInterface(material_child,
if (FAILED(hr)) &IID_IDirectXFileData, (void **)&data)))
{ {
IDirectXFileDataReference *reference; IDirectXFileDataReference *reference;
hr = IDirectXFileObject_QueryInterface(material_child, &IID_IDirectXFileDataReference, (void **)&reference); if (SUCCEEDED(IDirectXFileObject_QueryInterface(material_child,
if (FAILED(hr)) &IID_IDirectXFileDataReference, (void **)&reference)))
goto end; {
hr = IDirectXFileDataReference_Resolve(reference, &data); hr = IDirectXFileDataReference_Resolve(reference, &data);
IDirectXFileDataReference_Release(reference); IDirectXFileDataReference_Release(reference);
}
}
IDirectXFileObject_Release(material_child);
if (FAILED(hr)) if (FAILED(hr))
goto end; goto end;
}
hr = IDirectXFileData_GetType(data, &guid); hr = IDirectXFileData_GetType(data, &guid);
if (hr != DXFILE_OK) if (hr != DXFILE_OK)
@ -1308,6 +1309,7 @@ HRESULT load_mesh_data(IDirect3DRMMeshBuilder3 *iface, IDirectXFileData *pData,
} }
} }
} }
IDirectXFileData_Release(data);
} }
else if (hr != DXFILEERR_NOMOREOBJECTS) else if (hr != DXFILEERR_NOMOREOBJECTS)
{ {