Stefan Dösinger : wined3d: Check volume texture creation errors.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Feb 20 05:25:03 CST 2007


Module: wine
Branch: master
Commit: 401110538aa39214280367725f2d8cb80abbc3da
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=401110538aa39214280367725f2d8cb80abbc3da

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Mon Feb 19 15:18:45 2007 +0100

wined3d: Check volume texture creation errors.

Volumetexture::Release checks for NULL pointers, so releasing a partially 
created texture works.

---

 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);




More information about the wine-cvs mailing list