[1/10] WineD3D: Check volume texture creation errors
Stefan Dösinger
stefan at codeweavers.com
Mon Feb 19 08:18:45 CST 2007
Volumetexture::Release checks for NULL pointers, so releasing a partially
created texture works
-------------- next part --------------
From d1b007765eb8da6db2fafaa1cedfe8e67cb55a3d Mon Sep 17 00:00:00 2001
From: Stefan Doesinger <stefan at codeweavers.com>
Date: Sun, 18 Feb 2007 17:38:08 +0100
Subject: [PATCH] WineD3D: Check volume texture creation errors
---
dlls/wined3d/device.c | 12 ++++++++++--
1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 30771b0..510a32c 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -939,9 +939,17 @@ static HRESULT WINAPI IWineD3DDeviceImpl_CreateVolumeTexture(IWineD3DDevice *ifa
for (i = 0; i < object->baseTexture.levels; i++)
{
+ HRESULT hr;
/* Create the volume */
- D3DCB_CreateVolume(This->parent, parent, Width, Height, Depth, Format, Pool, Usage,
- (IWineD3DVolume **)&object->volumes[i], pSharedHandle);
+ hr = D3DCB_CreateVolume(This->parent, parent, Width, Height, Depth, Format, Pool, Usage,
+ (IWineD3DVolume **)&object->volumes[i], pSharedHandle);
+
+ if(FAILED(hr)) {
+ ERR("Creating a volume for the volume texture failed(%08x)\n", hr);
+ IWineD3DVolumeTexture_Release((IWineD3DVolumeTexture *) object);
+ *ppVolumeTexture = NULL;
+ return hr;
+ }
/* Set its container to this object */
IWineD3DVolume_SetContainer(object->volumes[i], (IWineD3DBase *)object);
--
1.4.4.3
More information about the wine-patches
mailing list