aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Gilbert2011-08-06 16:55:39 +1000
committerPaul Gilbert2011-08-06 16:55:39 +1000
commit9f8eb5a74086881f2818256b01fb6fb946c6420a (patch)
treea3dcfd6108eb5e5709f51bd678edb61181ca803f
parentfc05b8cf1b489933d28e35d949f2de62cc0d8c6a (diff)
downloadscummvm-rg350-9f8eb5a74086881f2818256b01fb6fb946c6420a.tar.gz
scummvm-rg350-9f8eb5a74086881f2818256b01fb6fb946c6420a.tar.bz2
scummvm-rg350-9f8eb5a74086881f2818256b01fb6fb946c6420a.zip
CGE: Re-added an explicit check in Sprite destructor against _sprite variable
The trouble is that the _sprite variable can currently be pointing to any registered sprite, and should only be freed in the destructor if it hasn't already been freed. Currently, this is best done by keeping track of whether the pointed to sprite has been already freed or not.
-rw-r--r--engines/cge/vga13h.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/engines/cge/vga13h.cpp b/engines/cge/vga13h.cpp
index 4ad4e83ad6..b1858c0cbe 100644
--- a/engines/cge/vga13h.cpp
+++ b/engines/cge/vga13h.cpp
@@ -231,6 +231,9 @@ Sprite::Sprite(CGEEngine *vm, BitmapPtr *shpP)
Sprite::~Sprite() {
+ if (_sprite == this)
+ _sprite = NULL;
+
contract();
}