Vitaliy Margolen : wined3d: Properly destroy texture object if we failed to create its surfaces.

Alexandre Julliard julliard at wine.codeweavers.com
Tue May 30 05:56:52 CDT 2006


Module: wine
Branch: refs/heads/master
Commit: 93fd4c12f8834a0c5ca3e166b999388b36bde218
URL:    http://source.winehq.org/git/?p=wine.git;a=commit;h=93fd4c12f8834a0c5ca3e166b999388b36bde218

Author: Vitaliy Margolen <wine-patch at kievinfo.com>
Date:   Mon May 29 14:51:33 2006 -0600

wined3d: Properly destroy texture object if we failed to create its surfaces.

---

 dlls/wined3d/device.c |    8 ++------
 1 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index a9dc6b4..70ac58d 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -843,14 +843,10 @@ HRESULT  WINAPI IWineD3DDeviceImpl_Creat
         /* use the callback to create the texture surface */
         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) {
-            int j;
             FIXME("Failed to create surface  %p\n", object);
             /* clean up */
-            for (j = 0 ; j <= i ; j++) {
-                if(object->surfaces[j]) IWineD3DSurface_Release(object->surfaces[j]);
-            }
-            /* heap free object */
-            HeapFree(GetProcessHeap(), 0, object);
+            object->surfaces[i] = NULL;
+            IWineD3DTexture_Release((IWineD3DTexture *)object);
 
             *ppTexture = NULL;
             return hr;




More information about the wine-cvs mailing list