[Scummvm-git-logs] scummvm master -> 7763ce58022a969c19e5a5f096d32e48a92d55d6

digitall 547637+digitall at users.noreply.github.com
Fri Mar 19 08:53:56 UTC 2021


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:
7763ce5802 GRIM: Fix Memset on Structures GCC Warnings


Commit: 7763ce58022a969c19e5a5f096d32e48a92d55d6
    https://github.com/scummvm/scummvm/commit/7763ce58022a969c19e5a5f096d32e48a92d55d6
Author: D G Turner (digitall at scummvm.org)
Date: 2021-03-19T08:52:11Z

Commit Message:
GRIM: Fix Memset on Structures GCC Warnings

This now uses a clear() method in the Track structure.

Changed paths:
    engines/grim/imuse/imuse.cpp
    engines/grim/imuse/imuse_script.cpp
    engines/grim/imuse/imuse_track.cpp
    engines/grim/imuse/imuse_track.h


diff --git a/engines/grim/imuse/imuse.cpp b/engines/grim/imuse/imuse.cpp
index faa5186d15..bd8a2e0032 100644
--- a/engines/grim/imuse/imuse.cpp
+++ b/engines/grim/imuse/imuse.cpp
@@ -58,7 +58,7 @@ Imuse::Imuse(int fps, bool demo) {
 	for (int l = 0; l < MAX_IMUSE_TRACKS + MAX_IMUSE_FADETRACKS; l++) {
 		_track[l] = new Track;
 		assert(_track[l]);
-		memset(_track[l], 0, sizeof(Track));
+		_track[l]->clear();
 		_track[l]->trackId = l;
 	}
 	vimaInit(imuseDestTable);
@@ -99,7 +99,7 @@ void Imuse::restoreState(SaveGame *savedState) {
 
 	for (int l = 0; l < MAX_IMUSE_TRACKS + MAX_IMUSE_FADETRACKS; l++) {
 		Track *track = _track[l];
-		memset(track, 0, sizeof(Track));
+		track->clear();
 		track->trackId = l;
 		track->pan = savedState->readLESint32();
 		track->panFadeDest = savedState->readLESint32();
@@ -210,7 +210,7 @@ void Imuse::callback() {
 			// mark it as unused.
 			if (!track->stream) {
 				if (!track->soundDesc || !g_system->getMixer()->isSoundHandleActive(track->handle))
-					memset(track, 0, sizeof(Track));
+					track->clear();
 				continue;
 			}
 
diff --git a/engines/grim/imuse/imuse_script.cpp b/engines/grim/imuse/imuse_script.cpp
index a2b1d63fd3..87789f7385 100644
--- a/engines/grim/imuse/imuse_script.cpp
+++ b/engines/grim/imuse/imuse_script.cpp
@@ -45,7 +45,7 @@ void Imuse::flushTrack(Track *track) {
 	}
 
 	if (!g_system->getMixer()->isSoundHandleActive(track->handle)) {
-		memset(track, 0, sizeof(Track));
+		track->clear();
 	}
 }
 
@@ -54,7 +54,7 @@ void Imuse::flushTracks() {
 	for (int l = 0; l < MAX_IMUSE_TRACKS + MAX_IMUSE_FADETRACKS; l++) {
 		Track *track = _track[l];
 		if (track->used && track->toBeRemoved && !g_system->getMixer()->isSoundHandleActive(track->handle)) {
-			memset(track, 0, sizeof(Track));
+			track->clear();
 		}
 	}
 }
@@ -167,7 +167,7 @@ void Imuse::stopAllSounds() {
 			if (track->soundDesc) {
 				_sound->closeSound(track->soundDesc);
 			}
-			memset(track, 0, sizeof(Track));
+			track->clear();
 		}
 	}
 }
diff --git a/engines/grim/imuse/imuse_track.cpp b/engines/grim/imuse/imuse_track.cpp
index 617a3ff9f2..80df2fc16b 100644
--- a/engines/grim/imuse/imuse_track.cpp
+++ b/engines/grim/imuse/imuse_track.cpp
@@ -61,7 +61,7 @@ int Imuse::allocSlot(int priority) {
 			}
 
 			// Mark it as unused
-			memset(track, 0, sizeof(Track));
+			track->clear();
 		} else {
 			return -1;
 		}
@@ -91,7 +91,7 @@ bool Imuse::startSound(const char *soundName, int volGroupId, int hookId, int vo
 			memcpy(track, fadeTrack, sizeof(Track));
 			track->trackId = i - MAX_IMUSE_TRACKS;
 			// Reset the track
-			memset(fadeTrack, 0, sizeof(Track));
+			fadeTrack->clear();
 			// Mark as used for now so the track won't be reused again this frame
 			track->used = true;
 
@@ -124,7 +124,7 @@ bool Imuse::startSound(const char *soundName, int volGroupId, int hookId, int vo
 
 	track = _track[l];
 	// Reset the track
-	memset(track, 0, sizeof(Track));
+	track->clear();
 
 	track->pan = pan * 1000;
 	track->vol = volume * 1000;
@@ -443,7 +443,7 @@ Track *Imuse::moveToFadeOutTrack(Track *track, int fadeDelay) {
 	fadeTrack->trackId = track->trackId + MAX_IMUSE_TRACKS;
 
 	// Reset the track
-	memset(track, 0, sizeof(Track));
+	track->clear();
 
 	// Mark as used for now so the track won't be reused again this frame
 	track->used = true;
diff --git a/engines/grim/imuse/imuse_track.h b/engines/grim/imuse/imuse_track.h
index 5abdd0ee0d..9e0eeb19c2 100644
--- a/engines/grim/imuse/imuse_track.h
+++ b/engines/grim/imuse/imuse_track.h
@@ -65,8 +65,41 @@ struct Track {
 	Audio::SoundHandle handle;
 	Audio::QueuingAudioStream *stream;
 
-	Track() : used(false), stream(NULL) {
-		soundName[0] = 0;
+	Track() {
+		clear();
+	}
+
+	void clear() {
+		trackId = 0;
+
+		pan = 0;
+		panFadeDest = 0;
+		panFadeStep = 0;
+		panFadeDelay = 0;
+		panFadeUsed = 0;
+		vol = 0;
+		volFadeDest = 0;
+		volFadeStep = 0;
+		volFadeDelay = 0;
+		volFadeUsed = 0;
+
+		for (uint i = 0; i < ARRAYSIZE(soundName); i++) {
+			soundName[i] = 0;
+		}
+		used = false;
+		toBeRemoved = false;
+		priority = 0;
+		regionOffset = 0;
+		dataOffset = 0;
+		curRegion = 0;
+		curHookId = 0;
+		volGroupId = 0;
+		feedSize = 0;
+		mixerFlags = 0;
+
+		soundDesc = nullptr;
+		// handle not cleared. FIXME: Clear by resetting _val to default (0xFFFFFFFF not 0)?
+		stream = nullptr;
 	}
 
 	/* getPan() returns -127 ... 127 */




More information about the Scummvm-git-logs mailing list