wined3d: Properly destroy texture object if we failed to create its surfaces.
This commit is contained in:
parent
19d19b2b79
commit
93fd4c12f8
|
@ -843,14 +843,10 @@ HRESULT WINAPI IWineD3DDeviceImpl_CreateTexture(IWineD3DDevice *iface, UINT Wid
|
||||||
/* use the callback to create the texture surface */
|
/* use the callback to create the texture surface */
|
||||||
hr = D3DCB_CreateSurface(This->parent, tmpW, tmpH, Format, Usage, Pool, i, &object->surfaces[i],NULL);
|
hr = D3DCB_CreateSurface(This->parent, tmpW, tmpH, Format, Usage, Pool, i, &object->surfaces[i],NULL);
|
||||||
if (hr!= WINED3D_OK || ( (IWineD3DSurfaceImpl *) object->surfaces[i])->Flags & SFLAG_OVERSIZE) {
|
if (hr!= WINED3D_OK || ( (IWineD3DSurfaceImpl *) object->surfaces[i])->Flags & SFLAG_OVERSIZE) {
|
||||||
int j;
|
|
||||||
FIXME("Failed to create surface %p\n", object);
|
FIXME("Failed to create surface %p\n", object);
|
||||||
/* clean up */
|
/* clean up */
|
||||||
for (j = 0 ; j <= i ; j++) {
|
object->surfaces[i] = NULL;
|
||||||
if(object->surfaces[j]) IWineD3DSurface_Release(object->surfaces[j]);
|
IWineD3DTexture_Release((IWineD3DTexture *)object);
|
||||||
}
|
|
||||||
/* heap free object */
|
|
||||||
HeapFree(GetProcessHeap(), 0, object);
|
|
||||||
|
|
||||||
*ppTexture = NULL;
|
*ppTexture = NULL;
|
||||||
return hr;
|
return hr;
|
||||||
|
|
Loading…
Reference in New Issue