[Scummvm-git-logs] scummvm master -> 2085bcb368c19bc90f0190efcd56b9d58cd7fb5a

bluegr noreply at scummvm.org
Sun Sep 13 15:52:07 UTC 2026


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

Summary:
f6a2af66ca DIRECTOR: Don't delete stream on failure
b1efaa419a EEM: Don't delete stream on failure
12b2621c37 VOYEUR: Don't allocate stream on stack
42308b6efa VIDEO: Don't delete stream on failure
eb7adfe456 BLADERUNNER: Make video decoder loadStream release stream on failure
484bab1855 CHEWY: Make video decoder loadStream release stream on failure
b29e0dbd4b GRIM: Make video decoder loadStream release stream on failure
d8bfa33110 KYRA: Make video decoder loadStream release stream on failure
ef6efdd562 NANCY: Make video decoder loadStream release stream on failure
d45b05b7a5 PINK: Make video decoder loadStream release stream on failure
4e7a9fa22a TOT: Make video decoder loadStream release stream on failure
5a2b8d22ab ZVISION: Make video decoder loadStream release stream on failure
2085bcb368 VIDEO: Make video decoders loadStream release stream on failure


Commit: f6a2af66cac5f4d131d52a2ecb5b933a4c52e4b9
    https://github.com/scummvm/scummvm/commit/f6a2af66cac5f4d131d52a2ecb5b933a4c52e4b9
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
DIRECTOR: Don't delete stream on failure

This should already be done by the decoder

Changed paths:
    engines/director/castmember/digitalvideo.cpp


diff --git a/engines/director/castmember/digitalvideo.cpp b/engines/director/castmember/digitalvideo.cpp
index 1f68611bc41..a83e675ecfa 100644
--- a/engines/director/castmember/digitalvideo.cpp
+++ b/engines/director/castmember/digitalvideo.cpp
@@ -70,10 +70,7 @@ public:
 			return false;
 		}
 
-		bool result = loadStream(file);
-		if (!result)
-			delete file;
-		return result;
+		return loadStream(file);
 	}
 
 	virtual bool loadStream(Common::SeekableReadStream *stream) override {


Commit: b1efaa419ab62aa1e5678e6bd04d4b64e1ecb0df
    https://github.com/scummvm/scummvm/commit/b1efaa419ab62aa1e5678e6bd04d4b64e1ecb0df
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
EEM: Don't delete stream on failure

This should already be done by the decoder

Changed paths:
    engines/eem/eem.cpp


diff --git a/engines/eem/eem.cpp b/engines/eem/eem.cpp
index 77a5c692b79..c695b89867c 100644
--- a/engines/eem/eem.cpp
+++ b/engines/eem/eem.cpp
@@ -1085,11 +1085,10 @@ void EEMEngine::playFlc(const Common::Path &path, bool fadeIn,
 	Video::FlicDecoder flic;
 	Common::ScopedPtr<Common::SeekableReadStream> stream(
 		Common::MacResManager::openFileOrDataFork(path));
-	if (!stream || !flic.loadStream(stream.get())) {
+	if (!stream || !flic.loadStream(stream.release())) {
 		warning("playFlc: %s missing", path.toString().c_str());
 		return;
 	}
-	stream.release();
 
 	const int fw = flic.getWidth();
 	const int fh = flic.getHeight();


Commit: 12b2621c377b6995d3df00854945f24a6b17e6bd
    https://github.com/scummvm/scummvm/commit/12b2621c377b6995d3df00854945f24a6b17e6bd
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
VOYEUR: Don't allocate stream on stack

This stream is owned by the decoder

Changed paths:
    engines/voyeur/animation.cpp
    engines/voyeur/voyeur.cpp


diff --git a/engines/voyeur/animation.cpp b/engines/voyeur/animation.cpp
index 4cf501aa558..9ffc5d72d59 100644
--- a/engines/voyeur/animation.cpp
+++ b/engines/voyeur/animation.cpp
@@ -71,6 +71,7 @@ bool RL2Decoder::loadStream(Common::SeekableReadStream *stream) {
 	// Check RL2 magic number
 	if (!_header.isValid()) {
 		warning("RL2Decoder::loadStream(): attempted to load non-RL2 data (0x%08X)", _header._signature);
+		close();
 		return false;
 	}
 
diff --git a/engines/voyeur/voyeur.cpp b/engines/voyeur/voyeur.cpp
index 1a375166bf3..98ae196d187 100644
--- a/engines/voyeur/voyeur.cpp
+++ b/engines/voyeur/voyeur.cpp
@@ -882,24 +882,25 @@ void VoyeurEngine::synchronize(Common::Serializer &s) {
 }
 
 void VoyeurEngine::showLogo8Intro() {
-	Common::File file;
-	if(!file.open("logo8.exe")) {
+	Common::File *file = new Common::File();
+	if(!file->open("logo8.exe")) {
+		delete file;
 		return;
 	}
-	file.seek(2);
-	int lastPageLength = file.readUint16LE();
-	int numPages = file.readUint16LE();
+	file->seek(2);
+	int lastPageLength = file->readUint16LE();
+	int numPages = file->readUint16LE();
 	int exeLength = (numPages - 1) * 512 + lastPageLength;
 
 	// The MVE movie data is appended to the end of the EXE
-	file.seek(exeLength, SEEK_SET);
+	file->seek(exeLength, SEEK_SET);
 
 	Common::Keymapper *keymapper = g_system->getEventManager()->getKeymapper();
 	keymapper->getKeymap("voyeur-default")->setEnabled(false);
 	keymapper->getKeymap("intro")->setEnabled(true);
 
 	Video::MveDecoder *decoder = new Video::MveDecoder();
-	if (decoder->loadStream(&file)) {
+	if (decoder->loadStream(file)) {
 		decoder->setAudioTrack(0);
 		decoder->start();
 
@@ -943,7 +944,6 @@ void VoyeurEngine::showLogo8Intro() {
 	keymapper->getKeymap("intro")->setEnabled(false);
 	keymapper->getKeymap("voyeur-default")->setEnabled(true);
 
-	file.close();
 	delete decoder;
 }
 


Commit: 42308b6efac7cee4a0caca918b2b5fabebe59d20
    https://github.com/scummvm/scummvm/commit/42308b6efac7cee4a0caca918b2b5fabebe59d20
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
VIDEO: Don't delete stream on failure

This should already be done by the decoder

Changed paths:
    video/video_decoder.cpp


diff --git a/video/video_decoder.cpp b/video/video_decoder.cpp
index befb697a2cb..db5bc241a8f 100644
--- a/video/video_decoder.cpp
+++ b/video/video_decoder.cpp
@@ -84,10 +84,7 @@ bool VideoDecoder::loadFile(const Common::Path &filename) {
 		return false;
 	}
 
-	bool result = loadStream(file);
-	if (!result)
-		delete file;
-	return result;
+	return loadStream(file);
 }
 
 bool VideoDecoder::needsUpdate() const {


Commit: eb7adfe4561610ac7baa8a3528adddfc69f0b47f
    https://github.com/scummvm/scummvm/commit/eb7adfe4561610ac7baa8a3528adddfc69f0b47f
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
BLADERUNNER: Make video decoder loadStream release stream on failure

Changed paths:
    engines/bladerunner/vqa_decoder.cpp


diff --git a/engines/bladerunner/vqa_decoder.cpp b/engines/bladerunner/vqa_decoder.cpp
index 749c9073c39..189344c39f1 100644
--- a/engines/bladerunner/vqa_decoder.cpp
+++ b/engines/bladerunner/vqa_decoder.cpp
@@ -182,17 +182,23 @@ bool VQADecoder::loadStream(Common::SeekableReadStream *s) {
 	uint32 type;
 
 	readIFFChunkHeader(s, &chd);
-	if (chd.id != kFORM || !chd.size)
+	if (chd.id != kFORM || !chd.size) {
+		close();
 		return false;
+	}
 
 	type = s->readUint32BE();
 
-	if (type != kWVQA)
+	if (type != kWVQA) {
+		close();
 		return false;
+	}
 
 	do {
-		if (!readIFFChunkHeader(_s, &chd))
+		if (!readIFFChunkHeader(_s, &chd)) {
+			close();
 			return false;
+		}
 
 		bool rc = false;
 		switch (chd.id) {
@@ -212,6 +218,7 @@ bool VQADecoder::loadStream(Common::SeekableReadStream *s) {
 
 		if (!rc) {
 			warning("failed to handle chunk %s", tag2str(chd.id));
+			close();
 			return false;
 		}
 	} while (chd.id != kFINF);


Commit: 484bab185541774add8cae42d77f141f7652cd15
    https://github.com/scummvm/scummvm/commit/484bab185541774add8cae42d77f141f7652cd15
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
CHEWY: Make video decoder loadStream release stream on failure

Changed paths:
    engines/chewy/video/cfo_decoder.cpp


diff --git a/engines/chewy/video/cfo_decoder.cpp b/engines/chewy/video/cfo_decoder.cpp
index 1c8808028d1..13d641d3856 100644
--- a/engines/chewy/video/cfo_decoder.cpp
+++ b/engines/chewy/video/cfo_decoder.cpp
@@ -59,8 +59,10 @@ enum CustomSubChunk {
 bool CfoDecoder::loadStream(Common::SeekableReadStream *stream) {
 	close();
 
-	if (stream->readUint32BE() != MKTAG('C', 'F', 'O', '\0'))
+	if (stream->readUint32BE() != MKTAG('C', 'F', 'O', '\0')) {
+		delete stream;
 		error("Corrupt video resource");
+	}
 
 	stream->readUint32LE();	// always 0
 


Commit: b29e0dbd4bc12cacd184f62cb541eabbbc644264
    https://github.com/scummvm/scummvm/commit/b29e0dbd4bc12cacd184f62cb541eabbbc644264
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
GRIM: Make video decoder loadStream release stream on failure

Changed paths:
    engines/grim/movie/codecs/smush_decoder.cpp


diff --git a/engines/grim/movie/codecs/smush_decoder.cpp b/engines/grim/movie/codecs/smush_decoder.cpp
index 50f70dcf78b..0864e950d46 100644
--- a/engines/grim/movie/codecs/smush_decoder.cpp
+++ b/engines/grim/movie/codecs/smush_decoder.cpp
@@ -257,6 +257,7 @@ bool SmushDecoder::loadStream(Common::SeekableReadStream *stream) {
 	// Load the video
 	if (!readHeader()) {
 		warning("Failure loading SMUSH-file");
+		close();
 		return false;
 	}
 


Commit: d8bfa33110e54fb57377a35990c2689a9dce918a
    https://github.com/scummvm/scummvm/commit/d8bfa33110e54fb57377a35990c2689a9dce918a
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
KYRA: Make video decoder loadStream release stream on failure

Changed paths:
    engines/kyra/graphics/vqa.cpp


diff --git a/engines/kyra/graphics/vqa.cpp b/engines/kyra/graphics/vqa.cpp
index 0f487221f4b..07e573cf97a 100644
--- a/engines/kyra/graphics/vqa.cpp
+++ b/engines/kyra/graphics/vqa.cpp
@@ -73,6 +73,7 @@ bool VQADecoder::loadStream(Common::SeekableReadStream *stream) {
 
 	if (_fileStream->readUint32BE() != MKTAG('F','O','R','M')) {
 		warning("VQADecoder::loadStream(): Cannot find `FORM' tag");
+		close();
 		return false;
 	}
 
@@ -82,6 +83,7 @@ bool VQADecoder::loadStream(Common::SeekableReadStream *stream) {
 
 	if (_fileStream->readUint32BE() != MKTAG('W','V','Q','A')) {
 		warning("VQADecoder::loadStream(): Cannot find `WVQA' tag");
+		close();
 		return false;
 	}
 
@@ -112,10 +114,12 @@ bool VQADecoder::loadStream(Common::SeekableReadStream *stream) {
 		case MKTAG('F','I','N','F'):
 			if (!foundVQHD) {
 				warning("VQADecoder::loadStream(): Found `FINF' before `VQHD'");
+				close();
 				return false;
 			}
 			if (size != 4 * getFrameCount()) {
 				warning("VQADecoder::loadStream(): Expected size %d for `FINF' chunk, but got %u", 4 * getFrameCount(), size);
+				close();
 				return false;
 			}
 			handleFINF(_fileStream);


Commit: ef6efdd56297eb8efa0bed890b326970b7db1895
    https://github.com/scummvm/scummvm/commit/ef6efdd56297eb8efa0bed890b326970b7db1895
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
NANCY: Make video decoder loadStream release stream on failure

Changed paths:
    engines/nancy/video.cpp


diff --git a/engines/nancy/video.cpp b/engines/nancy/video.cpp
index f9ae5b89383..1af2bb27c10 100644
--- a/engines/nancy/video.cpp
+++ b/engines/nancy/video.cpp
@@ -95,6 +95,7 @@ bool AVFDecoder::loadStream(Common::SeekableReadStream *stream) {
 
 	if (chunkFileFormat != 0x00020000 && chunkFileFormat != 0x00010000) {
 		warning("Unsupported version %d.%d found in AVF", chunkFileFormat >> 16, chunkFileFormat & 0xffff);
+		delete stream;
 		return false;
 	}
 


Commit: d45b05b7a595400a8f5ba17c6b21d5bc5a39269f
    https://github.com/scummvm/scummvm/commit/d45b05b7a595400a8f5ba17c6b21d5bc5a39269f
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
PINK: Make video decoder loadStream release stream on failure

Changed paths:
    engines/pink/cel_decoder.cpp


diff --git a/engines/pink/cel_decoder.cpp b/engines/pink/cel_decoder.cpp
index ad2d9f29646..eb3e3a0c1b5 100644
--- a/engines/pink/cel_decoder.cpp
+++ b/engines/pink/cel_decoder.cpp
@@ -36,6 +36,7 @@ bool CelDecoder::loadStream(Common::SeekableReadStream *stream) {
 	// Check FLC magic number
 	if (frameType != 0xAF12) {
 		warning("FlicDecoder::loadStream(): attempted to load non-FLC data (type = 0x%04X)", frameType);
+		delete stream;
 		return false;
 	}
 
@@ -45,6 +46,7 @@ bool CelDecoder::loadStream(Common::SeekableReadStream *stream) {
 	uint16 colorDepth = stream->readUint16LE();
 	if (colorDepth != 8) {
 		warning("FlicDecoder::loadStream(): attempted to load an FLC with a palette of color depth %d. Only 8-bit color palettes are supported", colorDepth);
+		delete stream;
 		return false;
 	}
 


Commit: 4e7a9fa22a7285f255d292f8eeb2ea894e9a7fd1
    https://github.com/scummvm/scummvm/commit/4e7a9fa22a7285f255d292f8eeb2ea894e9a7fd1
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
TOT: Make video decoder loadStream release stream on failure

Changed paths:
    engines/tot/decoder/TotFlicDecoder.cpp


diff --git a/engines/tot/decoder/TotFlicDecoder.cpp b/engines/tot/decoder/TotFlicDecoder.cpp
index dc98da4afaa..705ca04d5b7 100644
--- a/engines/tot/decoder/TotFlicDecoder.cpp
+++ b/engines/tot/decoder/TotFlicDecoder.cpp
@@ -43,6 +43,7 @@ bool TotFlicDecoder::loadStream(Common::SeekableReadStream *stream) {
 	// Check FLC magic number
 	if (frameType != FLC_FILE_HEADER) {
 		warning("FlicDecoder::loadStream(): attempted to load non-FLC data (type = 0x%04X)", frameType);
+		delete stream;
 		return false;
 	}
 
@@ -52,6 +53,7 @@ bool TotFlicDecoder::loadStream(Common::SeekableReadStream *stream) {
 	uint16 colorDepth = stream->readUint16LE();
 	if (colorDepth != 8) {
 		warning("FlicDecoder::loadStream(): attempted to load an FLC with a palette of color depth %d. Only 8-bit color palettes are supported", colorDepth);
+		delete stream;
 		return false;
 	}
 


Commit: 5a2b8d22ab68dbc6e4690b73bbad01848fd6887d
    https://github.com/scummvm/scummvm/commit/5a2b8d22ab68dbc6e4690b73bbad01848fd6887d
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
ZVISION: Make video decoder loadStream release stream on failure

Changed paths:
    engines/zvision/video/rlf_decoder.cpp


diff --git a/engines/zvision/video/rlf_decoder.cpp b/engines/zvision/video/rlf_decoder.cpp
index 458c8dc3e39..1a2f4b050d7 100644
--- a/engines/zvision/video/rlf_decoder.cpp
+++ b/engines/zvision/video/rlf_decoder.cpp
@@ -44,6 +44,7 @@ bool RLFDecoder::loadStream(Common::SeekableReadStream *stream) {
 		isValid = true;
 	} else {
 		warning("Invalid rlf stream");
+		delete stream;
 	}
 	debugC(5, kDebugVideo, "~loadStream()");	
 	return isValid;


Commit: 2085bcb368c19bc90f0190efcd56b9d58cd7fb5a
    https://github.com/scummvm/scummvm/commit/2085bcb368c19bc90f0190efcd56b9d58cd7fb5a
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-09-13T18:51:58+03:00

Commit Message:
VIDEO: Make video decoders loadStream release stream on failure

Also clarify documentation

Changed paths:
    video/avi_decoder.cpp
    video/bink_decoder.cpp
    video/dxa_decoder.cpp
    video/flic_decoder.cpp
    video/mve_decoder.cpp
    video/mve_decoder.h
    video/video_decoder.h


diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index 8b9e1538a1b..26d92baff45 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -438,12 +438,14 @@ bool AVIDecoder::loadStream(Common::SeekableReadStream *stream) {
 
 	if (!stream->size()) {
 		debugC(8, kDebugLevelGVideo, "AVIDecoder::loadStream(): skipping empty stream");
+		delete stream;
 		return false;
 	}
 
 	uint32 riffTag = stream->readUint32BE();
 	if (riffTag != ID_RIFF) {
 		warning("Failed to find RIFF header");
+		delete stream;
 		return false;
 	}
 
@@ -452,6 +454,7 @@ bool AVIDecoder::loadStream(Common::SeekableReadStream *stream) {
 
 	if (riffType != ID_AVI) {
 		warning("RIFF not an AVI file");
+		delete stream;
 		return false;
 	}
 
diff --git a/video/bink_decoder.cpp b/video/bink_decoder.cpp
index 07d635fd059..55574f53a3e 100644
--- a/video/bink_decoder.cpp
+++ b/video/bink_decoder.cpp
@@ -75,8 +75,10 @@ bool BinkDecoder::loadStream(Common::SeekableReadStream *stream) {
 	close();
 
 	uint32 id = stream->readUint32BE();
-	if ((id != kBIKfID) && (id != kBIKgID) && (id != kBIKhID) && (id != kBIKiID))
+	if ((id != kBIKfID) && (id != kBIKgID) && (id != kBIKhID) && (id != kBIKiID)) {
+		delete stream;
 		return false;
+	}
 
 	uint32 fileSize         = stream->readUint32LE() + 8;
 	uint32 frameCount       = stream->readUint32LE();
@@ -84,6 +86,7 @@ bool BinkDecoder::loadStream(Common::SeekableReadStream *stream) {
 
 	if (largestFrameSize > fileSize) {
 		warning("Largest frame size greater than file size");
+		delete stream;
 		return false;
 	}
 
@@ -96,6 +99,7 @@ bool BinkDecoder::loadStream(Common::SeekableReadStream *stream) {
 	uint32 frameRateDen = stream->readUint32LE();
 	if (frameRateNum == 0 || frameRateDen == 0) {
 		warning("Invalid frame rate (%d/%d)", frameRateNum, frameRateDen);
+		delete stream;
 		return false;
 	}
 
diff --git a/video/dxa_decoder.cpp b/video/dxa_decoder.cpp
index 6568c028c97..544498ccdf6 100644
--- a/video/dxa_decoder.cpp
+++ b/video/dxa_decoder.cpp
@@ -48,7 +48,7 @@ bool DXADecoder::loadStream(Common::SeekableReadStream *stream) {
 	uint32 tag = stream->readUint32BE();
 
 	if (tag != MKTAG('D','E','X','A')) {
-		close();
+		delete stream;
 		return false;
 	}
 
diff --git a/video/flic_decoder.cpp b/video/flic_decoder.cpp
index 9e78e405711..25f7d994e73 100644
--- a/video/flic_decoder.cpp
+++ b/video/flic_decoder.cpp
@@ -45,6 +45,7 @@ bool FlicDecoder::loadStream(Common::SeekableReadStream *stream) {
 	// Check FLC magic number
 	if (frameType != 0xAF12) {
 		warning("FlicDecoder::loadStream(): attempted to load non-FLC data (type = 0x%04X)", frameType);
+		delete stream;
 		return false;
 	}
 
@@ -54,6 +55,7 @@ bool FlicDecoder::loadStream(Common::SeekableReadStream *stream) {
 	uint16 colorDepth = stream->readUint16LE();
 	if (colorDepth != 8) {
 		warning("FlicDecoder::loadStream(): attempted to load an FLC with a palette of color depth %d. Only 8-bit color palettes are supported", colorDepth);
+		delete stream;
 		return false;
 	}
 
diff --git a/video/mve_decoder.cpp b/video/mve_decoder.cpp
index 6fe80be3d7d..6945da69d2a 100644
--- a/video/mve_decoder.cpp
+++ b/video/mve_decoder.cpp
@@ -55,10 +55,21 @@ MveDecoder::MveDecoder()
 
 MveDecoder::~MveDecoder() {
 	close();
+}
+
+void MveDecoder::close() {
+	VideoDecoder::close();
+
+	delete _s;
+	_s = nullptr;
 	delete _audioStream;
+	_audioStream = nullptr;
 	delete[] _frameData;
+	_frameData = nullptr;
 	delete[] _decodingMap;
+	_decodingMap = nullptr;
 	delete[] _skipMap;
+	_skipMap = nullptr;
 }
 
 static const char signature[] = "Interplay MVE File\x1A";
@@ -70,6 +81,7 @@ bool MveDecoder::loadStream(Common::SeekableReadStream *stream) {
 	stream->read(signature_buffer, sizeof(signature_buffer));
 	if (memcmp(signature_buffer, signature, sizeof(signature))) {
 		warning("MveDecoder::loadStream(): attempted to load non-MVE data");
+		delete stream;
 		return false;
 	}
 	_s = stream;
@@ -321,6 +333,7 @@ void MveDecoder::readNextPacket() {
 				assert((flags & 1) == 0);
 				assert((flags & 2) == 0);
 
+				delete _audioStream;
 				_audioStream = Audio::makeQueuingAudioStream(sampleRate, (flags & 2) != 0);
 				addTrack(new MveAudioTrack(this));
 
diff --git a/video/mve_decoder.h b/video/mve_decoder.h
index f1624b19df3..da6a6b4aa52 100644
--- a/video/mve_decoder.h
+++ b/video/mve_decoder.h
@@ -156,6 +156,7 @@ public:
 	MveDecoder();
 	virtual ~MveDecoder();
 
+	void close() override;
 	bool loadStream(Common::SeekableReadStream *stream) override;
 	void setAudioTrack(int track);
 	void applyPalette(PaletteManager *paletteManager);
diff --git a/video/video_decoder.h b/video/video_decoder.h
index a3789b8f39c..da4f89a36ee 100644
--- a/video/video_decoder.h
+++ b/video/video_decoder.h
@@ -72,7 +72,7 @@ public:
 	/**
 	 * Load a video from a generic read stream. The ownership of the
 	 * stream object transfers to this VideoDecoder instance, which is
-	 * hence also responsible for eventually deleting it.
+	 * hence also responsible for eventually deleting it even in case of failure.
 	 *
 	 * Implementations of this function are required to call addTrack()
 	 * for each track in the video upon success.




More information about the Scummvm-git-logs mailing list