LAB: Fix a memory leak in the Image class

This commit is contained in:
Filippos Karapetis 2015-12-18 14:19:58 +02:00 committed by Willem Jan Palenstijn
parent 5c480485d4
commit f1bb844e90
3 changed files with 9 additions and 6 deletions

View File

@ -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;

View File

@ -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.
*/

View File

@ -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);