aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--engines/cge2/hero.cpp3
-rw-r--r--engines/cge2/vga13h.cpp12
2 files changed, 11 insertions, 4 deletions
diff --git a/engines/cge2/hero.cpp b/engines/cge2/hero.cpp
index 4b50cccd8b..85eb09bede 100644
--- a/engines/cge2/hero.cpp
+++ b/engines/cge2/hero.cpp
@@ -46,6 +46,9 @@ Sprite *Hero::expand() { // It's very similar to Sprite's expand, but doesn't bo
char fname[kMaxPath];
_vm->mergeExt(fname, _file, kSprExt);
+
+ if (_ext != nullptr)
+ delete _ext;
_ext = new SprExt(_vm);
if (_ext == nullptr)
error("No core %s", fname);
diff --git a/engines/cge2/vga13h.cpp b/engines/cge2/vga13h.cpp
index 340f9c0966..d7e0552253 100644
--- a/engines/cge2/vga13h.cpp
+++ b/engines/cge2/vga13h.cpp
@@ -261,8 +261,14 @@ Sprite *Sprite::expand() {
if (_vm->_spriteNotify != nullptr)
(_vm->*_vm->_spriteNotify)();
+ char fname[kPathMax];
+ _vm->mergeExt(fname, _file, kSprExt);
+
+ if (_ext != nullptr)
+ delete _ext;
_ext = new SprExt(_vm);
- assert(_ext != nullptr);
+ if (_ext == nullptr)
+ error("No core %s", fname);
if (!*_file)
return this;
@@ -275,9 +281,6 @@ Sprite *Sprite::expand() {
maxnow = 0,
maxnxt = 0;
- char fname[kPathMax];
- _vm->mergeExt(fname, _file, kSprExt);
-
Seq *curSeq;
if (_seqCnt) {
curSeq = new Seq[_seqCnt];
@@ -479,6 +482,7 @@ Sprite *Sprite::contract() {
}
}
+ delete _ext;
_ext = nullptr;
return this;