diff --git a/dlls/d3d8/device.c b/dlls/d3d8/device.c index 99164e0dcf0..2b4b6ddeff2 100644 --- a/dlls/d3d8/device.c +++ b/dlls/d3d8/device.c @@ -1311,6 +1311,7 @@ static HRESULT WINAPI IDirect3DDevice8Impl_GetIndices(LPDIRECT3DDEVICE8 iface, I rc = IWineD3DDevice_GetIndices(This->WineD3DDevice, &retIndexData, &tmp); if (D3D_OK == rc && NULL != retIndexData) { IWineD3DVertexBuffer_GetParent(retIndexData, (IUnknown **)ppIndexData); + IWineD3DVertexBuffer_Release(retIndexData); } else { if(rc != D3D_OK) FIXME("Call to GetIndices failed\n"); *ppIndexData = NULL; diff --git a/dlls/d3d9/device.c b/dlls/d3d9/device.c index 81439817d5d..d0a456a6679 100644 --- a/dlls/d3d9/device.c +++ b/dlls/d3d9/device.c @@ -833,6 +833,7 @@ static HRESULT WINAPI IDirect3DDevice9Impl_GetIndices(LPDIRECT3DDEVICE9 iface, rc = IWineD3DDevice_GetIndices(This->WineD3DDevice, &retIndexData, &tmp); if (rc == D3D_OK && NULL != retIndexData) { IWineD3DVertexBuffer_GetParent(retIndexData, (IUnknown **)ppIndexData); + IWineD3DVertexBuffer_Release(retIndexData); }else{ if(rc != D3D_OK) FIXME("Call to GetIndices failed\n"); *ppIndexData = NULL; diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 597fcac92b5..375d57ee329 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -3244,7 +3244,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetIndices(IWineD3DDevice *iface, IWine *ppIndexData = This->stateBlock->pIndexData; + /* up ref count on ppindexdata */ if (*ppIndexData) { + IWineD3DIndexBuffer_AddRef(*ppIndexData); *pBaseVertexIndex = This->stateBlock->baseVertexIndex; TRACE("(%p) index data set to %p + %u\n", This, ppIndexData, This->stateBlock->baseVertexIndex); }else{