aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorTorbjörn Andersson2015-11-16 22:04:24 +0100
committerTorbjörn Andersson2015-11-16 22:08:49 +0100
commitd388981714e8d58d321f42ea67907f59267268f7 (patch)
treee7c6aa53b7038968c418e2459f414f02506f7874 /engines
parentac93f3512ffbad7b40ef62a3622367f24d6f5193 (diff)
downloadscummvm-rg350-d388981714e8d58d321f42ea67907f59267268f7.tar.gz
scummvm-rg350-d388981714e8d58d321f42ea67907f59267268f7.tar.bz2
scummvm-rg350-d388981714e8d58d321f42ea67907f59267268f7.zip
BBVS: Fix recent video player memory leak (CID 1339416)
Surface::convertTo() creates a new surface, so we have to free it once we're done with it.
Diffstat (limited to 'engines')
-rw-r--r--engines/bbvs/videoplayer.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/engines/bbvs/videoplayer.cpp b/engines/bbvs/videoplayer.cpp
index f417f275bf..1b721c434f 100644
--- a/engines/bbvs/videoplayer.cpp
+++ b/engines/bbvs/videoplayer.cpp
@@ -61,8 +61,10 @@ void BbvsEngine::playVideo(int videoNum) {
const Graphics::Surface *frame = videoDecoder->decodeNextFrame();
if (frame) {
if (frame->format.bytesPerPixel > 1) {
- const Graphics::Surface *frame1 = frame->convertTo(_system->getScreenFormat());
+ Graphics::Surface *frame1 = frame->convertTo(_system->getScreenFormat());
_system->copyRectToScreen(frame1->getPixels(), frame1->pitch, 0, 0, frame1->w, frame1->h);
+ frame1->free();
+ delete frame1;
} else {
_system->copyRectToScreen(frame->getPixels(), frame->pitch, 0, 0, frame->w, frame->h);
}