[Scummvm-git-logs] scummvm master -> eb1c9eb58b64a3959f495c3abb5a35fc65bed57a

sev- sev at scummvm.org
Thu Apr 2 15:25:22 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
eb1c9eb58b DIRECTOR: Plug memory leaks


Commit: eb1c9eb58b64a3959f495c3abb5a35fc65bed57a
    https://github.com/scummvm/scummvm/commit/eb1c9eb58b64a3959f495c3abb5a35fc65bed57a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-02T17:25:05+02:00

Commit Message:
DIRECTOR: Plug memory leaks

Changed paths:
    engines/director/cast.cpp
    engines/director/cast.h
    engines/director/score.cpp


diff --git a/engines/director/cast.cpp b/engines/director/cast.cpp
index 58950039a7..d610c33757 100644
--- a/engines/director/cast.cpp
+++ b/engines/director/cast.cpp
@@ -22,6 +22,7 @@
 
 #include "common/substream.h"
 #include "graphics/surface.h"
+#include "image/image_decoder.h"
 
 #include "director/director.h"
 #include "director/cachedmactext.h"
@@ -35,12 +36,14 @@ namespace Director {
 Cast::Cast() {
 	_type = kCastTypeNull;
 	_surface = nullptr;
+	_img = nullptr;
 
 	_modified = true;
 }
 
 Cast::~Cast() {
-	delete _surface;
+	if (_img)
+		delete _img;
 }
 
 BitmapCast::BitmapCast(Common::ReadStreamEndian &stream, uint32 castTag, uint16 version) {
@@ -250,11 +253,14 @@ TextCast::TextCast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcol
 	}
 
 	_cachedMacText = new CachedMacText(this, _bgcolor, version, -1, g_director->_wm);
-	// TODO Destroy me
 
 	_modified = false;
 }
 
+TextCast::~TextCast() {
+	delete _cachedMacText;
+}
+
 void TextCast::importStxt(const Stxt *stxt) {
 	_fontId = stxt->_fontId;
 	_textSlant = stxt->_textSlant;
diff --git a/engines/director/cast.h b/engines/director/cast.h
index 51ae805adb..e07fbda4ee 100644
--- a/engines/director/cast.h
+++ b/engines/director/cast.h
@@ -35,6 +35,10 @@ class SeekableReadStream;
 class ReadStreamEndian;
 }
 
+namespace Image {
+class ImageDecoder;
+}
+
 namespace Director {
 
 class Stxt;
@@ -52,6 +56,7 @@ public:
 	Common::Array<Resource> _children;
 
 	const Graphics::Surface *_surface;
+	Image::ImageDecoder *_img;
 
 	bool _modified;
 };
@@ -97,6 +102,7 @@ public:
 class TextCast : public Cast {
 public:
 	TextCast(Common::ReadStreamEndian &stream, uint16 version, int32 bgcolor);
+	virtual ~TextCast();
 
 	void setText(const char *text);
 
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index b3ea3d0559..2854bb2ace 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -373,6 +373,7 @@ void Score::loadSpriteImages(bool isSharedCast) {
 		delete pic;
 
 		bitmapCast->_surface = img->getSurface();
+		bitmapCast->_img = img;
 
 		debugC(4, kDebugImages, "Score::loadSpriteImages(): id: %d, w: %d, h: %d, flags: %x, bytes: %x, bpp: %d clut: %x",
 			imgId, w, h, bitmapCast->_flags, bitmapCast->_bytes, bitmapCast->_bitsPerPixel, bitmapCast->_clut);




More information about the Scummvm-git-logs mailing list