aboutsummaryrefslogtreecommitdiff
path: root/video/qt_decoder.cpp
diff options
context:
space:
mode:
authorMatthew Hoops2013-04-15 18:33:54 -0400
committerMatthew Hoops2013-04-15 18:33:54 -0400
commitef098e2898e0d3eb358189da05e3b973b652dc91 (patch)
tree6ce636cfa439e597c3489b00b308a9949da3571a /video/qt_decoder.cpp
parent749cdd6f44b4e26f7e46f72ae9b728cce81b4f6a (diff)
downloadscummvm-rg350-ef098e2898e0d3eb358189da05e3b973b652dc91.tar.gz
scummvm-rg350-ef098e2898e0d3eb358189da05e3b973b652dc91.tar.bz2
scummvm-rg350-ef098e2898e0d3eb358189da05e3b973b652dc91.zip
VIDEO: Fix potential memory leak when buffering a QuickTime frame
Diffstat (limited to 'video/qt_decoder.cpp')
-rw-r--r--video/qt_decoder.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/video/qt_decoder.cpp b/video/qt_decoder.cpp
index 9e26e96c7b..7539d4a1e2 100644
--- a/video/qt_decoder.cpp
+++ b/video/qt_decoder.cpp
@@ -712,14 +712,18 @@ const Graphics::Surface *QuickTimeDecoder::VideoTrackHandler::bufferNextFrame()
uint32 descId;
Common::SeekableReadStream *frameData = getNextFramePacket(descId);
- if (!frameData || !descId || descId > _parent->sampleDescs.size())
+ if (!frameData || !descId || descId > _parent->sampleDescs.size()) {
+ delete frameData;
return 0;
+ }
// Find which video description entry we want
VideoSampleDesc *entry = (VideoSampleDesc *)_parent->sampleDescs[descId - 1];
- if (!entry->_videoCodec)
+ if (!entry->_videoCodec) {
+ delete frameData;
return 0;
+ }
const Graphics::Surface *frame = entry->_videoCodec->decodeImage(frameData);
delete frameData;