From 9059271442db4e75c7d5c9e39a061807b6e64a33 Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 7 Mar 2011 01:30:31 +0100 Subject: [PATCH] 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 765c11aeb0a..165f6c085f0 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 8f98739c77f..6ed3c7dbac8 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 e24ff799611..a0eb4d0f31a 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);