Henri Verbeet : wined3d: Check subresources for NULL during texture cleanup .

Alexandre Julliard julliard at winehq.org
Mon Mar 7 12:22:45 CST 2011


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

Author: Henri Verbeet <hverbeet at codeweavers.com>
Date:   Mon Mar  7 01:30:31 2011 +0100

wined3d: Check subresources for NULL during texture cleanup.

This fixes a regression introduced by
1de6adfbae7ac36c6649aab209d1a62a64e80465.

---

 dlls/wined3d/cubetexture.c   |    6 ++++--
 dlls/wined3d/texture.c       |    7 +++++--
 dlls/wined3d/volumetexture.c |    6 ++++--
 3 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/dlls/wined3d/cubetexture.c b/dlls/wined3d/cubetexture.c
index 765c11a..165f6c0 100644
--- a/dlls/wined3d/cubetexture.c
+++ b/dlls/wined3d/cubetexture.c
@@ -179,10 +179,12 @@ static void cubetexture_cleanup(IWineD3DCubeTextureImpl *This)
 
     for (i = 0; i < sub_count; ++i)
     {
-        IWineD3DSurfaceImpl *surface = surface_from_resource(This->baseTexture.sub_resources[i]);
+        struct wined3d_resource *sub_resource = This->baseTexture.sub_resources[i];
 
-        if (surface)
+        if (sub_resource)
         {
+            IWineD3DSurfaceImpl *surface = surface_from_resource(sub_resource);
+
             /* Clean out the texture name we gave to the surface so that the
              * surface doesn't try and release it. */
             surface_set_texture_name(surface, 0, TRUE);
diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c
index 8f98739..6ed3c7d 100644
--- a/dlls/wined3d/texture.c
+++ b/dlls/wined3d/texture.c
@@ -201,9 +201,12 @@ static void texture_cleanup(IWineD3DTextureImpl *This)
 
     for (i = 0; i < This->baseTexture.level_count; ++i)
     {
-        IWineD3DSurfaceImpl *surface = surface_from_resource(This->baseTexture.sub_resources[i]);
-        if (surface)
+        struct wined3d_resource *sub_resource = This->baseTexture.sub_resources[i];
+
+        if (sub_resource)
         {
+            IWineD3DSurfaceImpl *surface = surface_from_resource(sub_resource);
+
             /* Clean out the texture name we gave to the surface so that the
              * surface doesn't try and release it */
             surface_set_texture_name(surface, 0, TRUE);
diff --git a/dlls/wined3d/volumetexture.c b/dlls/wined3d/volumetexture.c
index e24ff79..a0eb4d0 100644
--- a/dlls/wined3d/volumetexture.c
+++ b/dlls/wined3d/volumetexture.c
@@ -121,10 +121,12 @@ static void volumetexture_cleanup(IWineD3DVolumeTextureImpl *This)
 
     for (i = 0; i < This->baseTexture.level_count; ++i)
     {
-        IWineD3DVolumeImpl *volume = volume_from_resource(This->baseTexture.sub_resources[i]);
+        struct wined3d_resource *sub_resource = This->baseTexture.sub_resources[i];
 
-        if (volume)
+        if (sub_resource)
         {
+            IWineD3DVolumeImpl *volume = volume_from_resource(sub_resource);
+
             /* Cleanup the container. */
             volume_set_container(volume, NULL);
             IWineD3DVolume_Release((IWineD3DVolume *)volume);




More information about the wine-cvs mailing list