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

sev- sev at scummvm.org
Thu Apr 2 15:55:17 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:
afdcc9168f DIRECTOR: Plug memory leaks


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

Commit Message:
DIRECTOR: Plug memory leaks

Changed paths:
    engines/director/cachedmactext.cpp
    engines/director/director.cpp
    engines/director/frame.cpp
    engines/director/lingo/lingo.cpp
    engines/director/score.cpp


diff --git a/engines/director/cachedmactext.cpp b/engines/director/cachedmactext.cpp
index e35f163427..6c0b47fb88 100644
--- a/engines/director/cachedmactext.cpp
+++ b/engines/director/cachedmactext.cpp
@@ -53,6 +53,8 @@ void CachedMacText::makeMacText() {
 	uint color = _wm->findBestColor(_textCast->_palinfo1 & 0xff, _textCast->_palinfo2 & 0xff, _textCast->_palinfo3 & 0xff);
 
 	_macText = new Graphics::MacText(_textCast->_ftext, _wm, macFont, color, _bgcolor, _width, _align, 1);
+
+	delete macFont;
 }
 
 CachedMacText::~CachedMacText() {
diff --git a/engines/director/director.cpp b/engines/director/director.cpp
index 8bac36097f..822760a74d 100644
--- a/engines/director/director.cpp
+++ b/engines/director/director.cpp
@@ -112,6 +112,7 @@ DirectorEngine::~DirectorEngine() {
 
 	delete _soundManager;
 	delete _lingo;
+	delete _wm;
 }
 
 Common::Error DirectorEngine::run() {
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 839498cbc0..cb1707d1e9 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -107,6 +107,7 @@ Frame::Frame(const Frame &frame) {
 
 Frame::~Frame() {
 	delete _palette;
+	_drawRects.clear();
 
 	for (uint16 i = 0; i < _sprites.size(); i++)
 		delete _sprites[i];
@@ -842,9 +843,7 @@ void Frame::renderText(Graphics::ManagedSurface &surface, uint16 spriteId, Commo
 		return;
 	}
 
-	Graphics::MacFont *macFont = new Graphics::MacFont(textCast->_fontId, textCast->_fontSize, textCast->_textSlant);
-
-	debugC(3, kDebugText, "renderText: sprite: %d x: %d y: %d w: %d h: %d font: '%s' text: '%s'", spriteId, x, y, width, height, _vm->_wm->_fontMan->getFontName(*macFont).c_str(), Common::toPrintable(textCast->_ftext).c_str());
+	debugC(3, kDebugText, "renderText: sprite: %d x: %d y: %d w: %d h: %d fontId: '%d' text: '%s'", spriteId, x, y, width, height, textCast->_fontId, Common::toPrintable(textCast->_ftext).c_str());
 
 	uint16 boxShadow = (uint16)textCast->_boxShadow;
 	uint16 borderSize = (uint16)textCast->_borderSize;
diff --git a/engines/director/lingo/lingo.cpp b/engines/director/lingo/lingo.cpp
index a3f070094d..9bd50ea524 100644
--- a/engines/director/lingo/lingo.cpp
+++ b/engines/director/lingo/lingo.cpp
@@ -89,6 +89,13 @@ Lingo::Lingo(DirectorEngine *vm) : _vm(vm) {
 
 Lingo::~Lingo() {
 	cleanupBuiltins();
+
+	if (_localvars)
+		for (SymbolHash::iterator it = _localvars->begin(); it != _localvars->end(); ++it)
+			delete it->_value;
+
+	for (SymbolHash::iterator it = _globalvars.begin(); it != _globalvars.end(); ++it)
+		delete it->_value;
 }
 
 ScriptContext *Lingo::getScriptContext(ScriptType type, uint16 id) {
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index 23131078e0..915438fefe 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -1278,6 +1278,8 @@ void Score::loadCastInfo(Common::SeekableSubReadStreamEndian &stream, uint16 id)
 	ci->fileName = getString(castStrings[3]);
 	ci->type = castStrings[4];
 
+	castStrings.clear();
+
 	debugC(5, kDebugLoading, "Score::loadCastInfo(): CastInfo: name: '%s' directory: '%s', fileName: '%s', type: '%s'",
 				ci->name.c_str(), ci->directory.c_str(), ci->fileName.c_str(), ci->type.c_str());
 




More information about the Scummvm-git-logs mailing list