diff --git a/engines/grim/bitmap.cpp b/engines/grim/bitmap.cpp index 510bd02c2a7..c07c0517549 100644 --- a/engines/grim/bitmap.cpp +++ b/engines/grim/bitmap.cpp @@ -240,10 +240,10 @@ BitmapData::BitmapData() : BitmapData::~BitmapData() { _keepData = false; - freeData(); if (_loaded) { g_driver->destroyBitmap(this); } + freeData(); if (_bitmaps) { if (_bitmaps->contains(_fname)) { _bitmaps->erase(_fname); diff --git a/engines/grim/gfx_tinygl.cpp b/engines/grim/gfx_tinygl.cpp index f04505fd3c7..b6915dc7bbf 100644 --- a/engines/grim/gfx_tinygl.cpp +++ b/engines/grim/gfx_tinygl.cpp @@ -849,6 +849,10 @@ void GfxTinyGL::drawBitmap(const Bitmap *bitmap, int x, int y) { } void GfxTinyGL::destroyBitmap(BitmapData *bitmap) { + for (int pic = 0; pic < bitmap->_numImages; pic++) { + if (bitmap->_data) + bitmap->_data[pic].free(); + } delete[] (BlitImage*)bitmap->_texIds; }