diff --git a/engines/lab/engine.cpp b/engines/lab/engine.cpp index a229b68dd4e..5eed831d11f 100644 --- a/engines/lab/engine.cpp +++ b/engines/lab/engine.cpp @@ -1229,8 +1229,7 @@ int LabEngine::followCrumbs() { void LabEngine::mayShowCrumbIndicator() { - static byte dropCrumbs[] = { 0x00 }; - static Image dropCrumbsImage(24, 24, dropCrumbs, this); + static Image dropCrumbsImage(24, 24, nullptr, this); if (getPlatform() != Common::kPlatformWindows) return; @@ -1242,8 +1241,7 @@ void LabEngine::mayShowCrumbIndicator() { } void LabEngine::mayShowCrumbIndicatorOff() { - static byte dropCrumbsOff[] = { 0x00 }; - static Image dropCrumbsOffImage(24, 24, dropCrumbsOff, this); + static Image dropCrumbsOffImage(24, 24, nullptr, this); if (getPlatform() != Common::kPlatformWindows) return; diff --git a/engines/lab/image.cpp b/engines/lab/image.cpp index 6ace005f9fb..2e0ecc196d7 100644 --- a/engines/lab/image.cpp +++ b/engines/lab/image.cpp @@ -49,10 +49,14 @@ Image::Image(Common::File *s, LabEngine *vm) : _vm(vm) { if (size & 1) size++; - _imageData = new byte[size]; // FIXME: Memory leak! + _imageData = new byte[size]; s->read(_imageData, size); } +Image::~Image() { + delete _imageData; +} + /** * Blits a piece of one image to another. */ diff --git a/engines/lab/image.h b/engines/lab/image.h index 90ea1f3ada3..e95125eaab2 100644 --- a/engines/lab/image.h +++ b/engines/lab/image.h @@ -47,9 +47,10 @@ public: uint16 _height; byte *_imageData; - Image(LabEngine *vm) : _width(0), _height(0), _imageData(0), _vm(vm) {} + Image(LabEngine *vm) : _width(0), _height(0), _imageData(nullptr), _vm(vm) {} Image(int w, int h, byte *d, LabEngine *vm) : _width(w), _height(h), _imageData(d), _vm(vm) {} Image(Common::File *s, LabEngine *vm); + virtual ~Image(); void drawImage(uint16 x, uint16 y); void drawMaskImage(uint16 x, uint16 y);