diff options
-rw-r--r-- | engines/sword2/screen.cpp | 4 | ||||
-rw-r--r-- | engines/sword2/sprite.cpp | 10 |
2 files changed, 12 insertions, 2 deletions
diff --git a/engines/sword2/screen.cpp b/engines/sword2/screen.cpp index fb2e108b2f..1e45c0fc1f 100644 --- a/engines/sword2/screen.cpp +++ b/engines/sword2/screen.cpp @@ -966,11 +966,15 @@ void Screen::rollCredits() { if (Sword2Engine::isPsx()) { if (!f.open("credits.txt")) { warning("Can't find credits.txt"); + + free(logoData); return; } } else { if (!f.open("credits.clu")) { warning("Can't find credits.clu"); + + free(logoData); return; } } diff --git a/engines/sword2/sprite.cpp b/engines/sword2/sprite.cpp index 5a45c19ab6..7d45f8df4e 100644 --- a/engines/sword2/sprite.cpp +++ b/engines/sword2/sprite.cpp @@ -528,8 +528,11 @@ int32 Screen::drawSprite(SpriteInfo *s) { decompData = decompressHIF(s->data, tempBuf); // Check that we correctly decompressed data - if (!decompData) + if (!decompData) { + free(tempBuf); + return RDERR_DECOMPRESSION; + } s->w = (decompData / (s->h / 2)) * 2; byte *tempBuf2 = (byte *)malloc(s->w * s->h * 10); @@ -571,8 +574,11 @@ int32 Screen::drawSprite(SpriteInfo *s) { uint32 decompData = decompressHIF(s->data, tempBuf); // Check that we correctly decompressed data - if (!decompData) + if (!decompData) { + free(tempBuf); + return RDERR_DECOMPRESSION; + } s->w = (decompData / (s->h / 2)); sprite = (byte *)malloc(s->w * s->h); |