summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Aaron Giles <aaron@aarongiles.com>2011-11-27 04:58:47 +0000
committer Aaron Giles <aaron@aarongiles.com>2011-11-27 04:58:47 +0000
commit4a3512c75692a91949a5b91c1c18bc24289ff0d0 (patch)
tree979e6b1b6fb60633461941ff6342e79715fca187
parentf93cda177573843a1cf657118e179671c59d40db (diff)
Fix obvious use-after-free error in device_delete().
Remove explicit freeing of HLSL shadow_texture, since it is allocated by texture_create() which does its own tracking and freeing.
-rw-r--r--src/osd/windows/d3dhlsl.c6
-rw-r--r--src/osd/windows/drawd3d.c6
2 files changed, 3 insertions, 9 deletions
diff --git a/src/osd/windows/d3dhlsl.c b/src/osd/windows/d3dhlsl.c
index 0a3447354ea..625ad7f3400 100644
--- a/src/osd/windows/d3dhlsl.c
+++ b/src/osd/windows/d3dhlsl.c
@@ -2277,12 +2277,6 @@ void hlsl_info::delete_resources()
registered_targets = 0;
- if (shadow_texture != NULL)
- {
- global_free(shadow_texture);
- shadow_texture = NULL;
- }
-
if (shadow_bitmap != NULL)
{
global_free(shadow_bitmap);
diff --git a/src/osd/windows/drawd3d.c b/src/osd/windows/drawd3d.c
index 6f193be9974..41245e70906 100644
--- a/src/osd/windows/drawd3d.c
+++ b/src/osd/windows/drawd3d.c
@@ -892,15 +892,15 @@ static int device_create_resources(d3d_info *d3d)
static void device_delete(d3d_info *d3d)
{
+ // free our effects
+ d3d->hlsl->delete_resources();
+
// delete the HLSL interface
global_free(d3d->hlsl);
// free our base resources
device_delete_resources(d3d);
- // free our effects
- d3d->hlsl->delete_resources();
-
// free the device itself
if (d3d->device != NULL)
(*d3dintf->device.release)(d3d->device);