[Scummvm-git-logs] scummvm master -> 3285aae6d14983c331d5f8b031f8c9b52911dbe2

rvanlaar noreply at scummvm.org
Tue Sep 20 20:13:54 UTC 2022


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:
3285aae6d1 AUDIO: fix memory leak in aiff


Commit: 3285aae6d14983c331d5f8b031f8c9b52911dbe2
    https://github.com/scummvm/scummvm/commit/3285aae6d14983c331d5f8b031f8c9b52911dbe2
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2022-09-20T22:13:31+02:00

Commit Message:
AUDIO: fix memory leak in aiff

Dispose of the AIFF stream properly by setting the disposeAfterUse flag
in all makeStream functions.

Changed paths:
    audio/decoders/aiff.cpp
    audio/decoders/aiff.h


diff --git a/audio/decoders/aiff.cpp b/audio/decoders/aiff.cpp
index 1092180a0c6..fb278339eea 100644
--- a/audio/decoders/aiff.cpp
+++ b/audio/decoders/aiff.cpp
@@ -210,7 +210,7 @@ RewindableAudioStream *AIFFHeader::makeAIFFStream(Common::SeekableReadStream *st
 		if (_codec == MKTAG('s', 'o', 'w', 't'))
 			rawFlags |= Audio::FLAG_LITTLE_ENDIAN;
 
-		return makeRawStream(_dataStream, _rate, rawFlags);
+		return makeRawStream(_dataStream, _rate, rawFlags, disposeAfterUse);
 	}
 	case MKTAG('i', 'm', 'a', '4'):
 		// TODO: Use QT IMA ADPCM
@@ -223,10 +223,10 @@ RewindableAudioStream *AIFFHeader::makeAIFFStream(Common::SeekableReadStream *st
 		break;
 	case MKTAG('A', 'D', 'P', '4'):
 		// ADP4 on 3DO
-		return make3DO_ADP4AudioStream(_dataStream, _rate, _channels == 2);
+		return make3DO_ADP4AudioStream(_dataStream, _rate, _channels == 2, NULL, disposeAfterUse);
 	case MKTAG('S', 'D', 'X', '2'):
 		// SDX2 on 3DO
-		return make3DO_SDX2AudioStream(_dataStream, _rate, _channels == 2);
+		return make3DO_SDX2AudioStream(_dataStream, _rate, _channels == 2, NULL, disposeAfterUse);
 	default:
 		warning("Unhandled AIFF-C compression tag '%s'", tag2str(_codec));
 	}
@@ -235,16 +235,15 @@ RewindableAudioStream *AIFFHeader::makeAIFFStream(Common::SeekableReadStream *st
 	return nullptr;
 }
 
-AIFFHeader::~AIFFHeader() {
-	delete _dataStream;
-}
-
 RewindableAudioStream *makeAIFFStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse) {
 	AIFFHeader *aiffHeader = AIFFHeader::readAIFFHeader(stream, disposeAfterUse);
 	if (aiffHeader == nullptr) {
 		return nullptr;
 	}
-	return aiffHeader->makeAIFFStream(stream, disposeAfterUse);
+
+	auto res = aiffHeader->makeAIFFStream(stream, disposeAfterUse);
+	delete aiffHeader;
+	return res;
 }
 
 } // End of namespace Audio
diff --git a/audio/decoders/aiff.h b/audio/decoders/aiff.h
index f16b6bdc061..53de7c2eb70 100644
--- a/audio/decoders/aiff.h
+++ b/audio/decoders/aiff.h
@@ -45,7 +45,6 @@ class RewindableAudioStream;
 
 class AIFFHeader {
 public:
-	~AIFFHeader();
 	static AIFFHeader *readAIFFHeader(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse);
 	RewindableAudioStream *makeAIFFStream(Common::SeekableReadStream *stream, DisposeAfterUse::Flag disposeAfterUse);
 




More information about the Scummvm-git-logs mailing list