[Scummvm-cvs-logs] SF.net SVN: scummvm:[33852] scummvm/branches/gsoc2008-rtl/engines/agos/ sound.cpp

cpage88 at users.sourceforge.net cpage88 at users.sourceforge.net
Thu Aug 14 02:26:58 CEST 2008


Revision: 33852
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33852&view=rev
Author:   cpage88
Date:     2008-08-14 00:26:57 +0000 (Thu, 14 Aug 2008)

Log Message:
-----------
Fixed a memory leak in Agos

Modified Paths:
--------------
    scummvm/branches/gsoc2008-rtl/engines/agos/sound.cpp

Modified: scummvm/branches/gsoc2008-rtl/engines/agos/sound.cpp
===================================================================
--- scummvm/branches/gsoc2008-rtl/engines/agos/sound.cpp	2008-08-13 23:07:26 UTC (rev 33851)
+++ scummvm/branches/gsoc2008-rtl/engines/agos/sound.cpp	2008-08-14 00:26:57 UTC (rev 33852)
@@ -56,10 +56,12 @@
 public:
 	BaseSound(Audio::Mixer *mixer, File *file, uint32 base = 0, bool bigEndian = false);
 	BaseSound(Audio::Mixer *mixer, File *file, uint32 *offsets, bool bigEndian = false);
+	virtual ~BaseSound();
+	void close();
+	
 	void playSound(uint sound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol = 0) {
 		playSound(sound, sound, type, handle, flags, vol);
 	}
-	virtual ~BaseSound();
 	virtual void playSound(uint sound, uint loopSound, Audio::Mixer::SoundType type, Audio::SoundHandle *handle, byte flags, int vol = 0) = 0;
 	virtual Audio::AudioStream *makeAudioStream(uint sound) { return NULL; }
 };
@@ -184,6 +186,12 @@
 	_freeOffsets = false;
 }
 
+void BaseSound::close() {
+	if (_freeOffsets) {
+		free(_offsets);
+	}
+}
+
 BaseSound::~BaseSound() {
 	if (_freeOffsets)
 		free(_offsets);
@@ -555,6 +563,9 @@
 
 void Sound::loadSfxTable(File *gameFile, uint32 base) {
 	stopAll();
+	
+	if (_effects)
+		_effects->close();
 
 	if (_vm->getPlatform() == Common::kPlatformWindows)
 		_effects = new WavSound(_mixer, gameFile, base);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list