diff options
-rw-r--r-- | engines/cge2/hero.cpp | 3 | ||||
-rw-r--r-- | engines/cge2/vga13h.cpp | 12 |
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; |