[Scummvm-git-logs] scummvm master -> 56a7b746c304392b97b8035a233c256ab217e1c3
sev-
sev at scummvm.org
Thu Apr 2 14:33:14 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:
56a7b746c3 DIRECTOR: Plug memory leaks
Commit: 56a7b746c304392b97b8035a233c256ab217e1c3
https://github.com/scummvm/scummvm/commit/56a7b746c304392b97b8035a233c256ab217e1c3
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2020-04-02T16:32:53+02:00
Commit Message:
DIRECTOR: Plug memory leaks
Changed paths:
engines/director/archive.cpp
engines/director/frame.cpp
engines/director/score.cpp
engines/director/sprite.cpp
diff --git a/engines/director/archive.cpp b/engines/director/archive.cpp
index acdc451437..9d9a93f02f 100644
--- a/engines/director/archive.cpp
+++ b/engines/director/archive.cpp
@@ -589,7 +589,7 @@ Common::SeekableSubReadStreamEndian *RIFXArchive::getResource(uint32 tag, uint16
uint32 offset = res.offset + 8;
uint32 size = res.size;
- return new Common::SeekableSubReadStreamEndian(_stream, offset, offset + size, true, DisposeAfterUse::NO);
+ return new Common::SeekableSubReadStreamEndian(_stream, offset, offset + size, true, DisposeAfterUse::YES);
}
Resource RIFXArchive::getResourceDetail(uint32 tag, uint16 id) {
diff --git a/engines/director/frame.cpp b/engines/director/frame.cpp
index 0203f5e47f..839498cbc0 100644
--- a/engines/director/frame.cpp
+++ b/engines/director/frame.cpp
@@ -107,6 +107,9 @@ Frame::Frame(const Frame &frame) {
Frame::~Frame() {
delete _palette;
+
+ for (uint16 i = 0; i < _sprites.size(); i++)
+ delete _sprites[i];
}
void Frame::readChannel(Common::SeekableSubReadStreamEndian &stream, uint16 offset, uint16 size) {
diff --git a/engines/director/score.cpp b/engines/director/score.cpp
index d2e39dfd5e..b3ea3d0559 100644
--- a/engines/director/score.cpp
+++ b/engines/director/score.cpp
@@ -369,6 +369,9 @@ void Score::loadSpriteImages(bool isSharedCast) {
}
img->loadStream(*pic);
+
+ delete pic;
+
bitmapCast->_surface = img->getSurface();
debugC(4, kDebugImages, "Score::loadSpriteImages(): id: %d, w: %d, h: %d, flags: %x, bytes: %x, bpp: %d clut: %x",
@@ -446,6 +449,10 @@ Score::~Score() {
_movieArchive = nullptr;
}
+ if (_loadedCast)
+ for (Common::HashMap<int, Cast *>::iterator it = _loadedCast->begin(); it != _loadedCast->end(); ++it)
+ delete it->_value;
+
delete _font;
delete _labels;
delete _loadedStxts;
diff --git a/engines/director/sprite.cpp b/engines/director/sprite.cpp
index 49e69d809f..0ae47b6caf 100644
--- a/engines/director/sprite.cpp
+++ b/engines/director/sprite.cpp
@@ -108,8 +108,6 @@ Sprite::Sprite(const Sprite &sprite) {
}
Sprite::~Sprite() {
- if (_cast)
- delete _cast;
}
uint16 Sprite::getPattern() {
More information about the Scummvm-git-logs
mailing list