diff options
| author | Borja Lorente | 2016-08-09 15:36:21 +0200 | 
|---|---|---|
| committer | Borja Lorente | 2016-08-19 16:29:15 +0200 | 
| commit | 7f533ff7df2e54efc01a44a838cd8f67ddf551b0 (patch) | |
| tree | fd91d27891c0121d2dd1414cffffd7b4e20341b9 | |
| parent | fd601f016f952f0a1b7fb4170fa05293813e7da5 (diff) | |
| download | scummvm-rg350-7f533ff7df2e54efc01a44a838cd8f67ddf551b0.tar.gz scummvm-rg350-7f533ff7df2e54efc01a44a838cd8f67ddf551b0.tar.bz2 scummvm-rg350-7f533ff7df2e54efc01a44a838cd8f67ddf551b0.zip | |
MACVENTURE: Fix double free on sound
| -rw-r--r-- | engines/macventure/macventure.cpp | 4 | ||||
| -rw-r--r-- | engines/macventure/sound.cpp | 15 | 
2 files changed, 11 insertions, 8 deletions
| diff --git a/engines/macventure/macventure.cpp b/engines/macventure/macventure.cpp index 8b947d5790..beee71aae5 100644 --- a/engines/macventure/macventure.cpp +++ b/engines/macventure/macventure.cpp @@ -634,8 +634,8 @@ void MacVentureEngine::playSounds(bool pause) {  		}  	}  	if (pause && delay > 0) { -		warning("Sound pausing not yet tested. Pausing for %d", delay * 1000); -		g_system->delayMillis(delay * 1000); +		warning("Sound pausing not yet tested. Pausing for %d", delay); +		g_system->delayMillis(delay);  		preparedToRun();  	}  } diff --git a/engines/macventure/sound.cpp b/engines/macventure/sound.cpp index ea3b2d94ee..f05c88fcd6 100644 --- a/engines/macventure/sound.cpp +++ b/engines/macventure/sound.cpp @@ -42,7 +42,8 @@ SoundManager::~SoundManager(){  		delete _container;  	Common::HashMap<ObjID, SoundAsset*>::iterator it; -	for (it = _assets.begin(); it != _assets.end(); it++) { +	Common::HashMap<ObjID, SoundAsset*>::iterator end = _assets.end(); +	for (it = _assets.begin(); it != end; it++) {  		delete it->_value;  	}  } @@ -60,7 +61,7 @@ void SoundManager::ensureLoaded(ObjID sound) {  SoundAsset::SoundAsset(Container *container, ObjID id) :  	_container(container), _id(id), _length(0), _frequency(1) { - +	debug("SoundAsset::SoundAsset(%d)", _id);  	if (_container->getItemByteSize(_id) == 0)  		warning("Trying to load an empty sound asset."); @@ -99,17 +100,19 @@ SoundAsset::SoundAsset(Container *container, ObjID id) :  	delete stream;  } -SoundAsset::~SoundAsset() {} +SoundAsset::~SoundAsset() { +	debug("SoundAsset::~SoundAsset(%d)", _id); +}  void SoundAsset::play(Audio::Mixer *mixer, Audio::SoundHandle *soundHandle) {  	if (_data.size() == 0) return; -	Audio::AudioStream *sound = Audio::makeRawStream(&_data.front(), _length, _frequency, Audio::FLAG_UNSIGNED); +	Audio::AudioStream *sound = Audio::makeRawStream(&_data.front(), _length, _frequency, Audio::FLAG_UNSIGNED, DisposeAfterUse::NO);  	mixer->playStream(Audio::Mixer::kPlainSoundType, soundHandle, sound);  }  uint32 SoundAsset::getPlayLength() { - -	return _length / _frequency; +	// Transform to milliseconds +	return _length * 1000 / _frequency;  }  void SoundAsset::decode10(Common::SeekableReadStream *stream) { | 
