[Scummvm-git-logs] scummvm master -> 0c203f7edf855de0c75f9009cc14e6ce47e93191
antoniou79
a.antoniou79 at gmail.com
Mon Aug 2 12:41:13 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:
0c203f7edf BLADERUNNER: Don't keep bad uninitialized values on load
Commit: 0c203f7edf855de0c75f9009cc14e6ce47e93191
https://github.com/scummvm/scummvm/commit/0c203f7edf855de0c75f9009cc14e6ce47e93191
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2021-08-02T15:41:04+03:00
Commit Message:
BLADERUNNER: Don't keep bad uninitialized values on load
For ambient sound tracks
Changed paths:
engines/bladerunner/ambient_sounds.cpp
engines/bladerunner/script/script.cpp
diff --git a/engines/bladerunner/ambient_sounds.cpp b/engines/bladerunner/ambient_sounds.cpp
index d4e1d82b9e..3ebd8f8f87 100644
--- a/engines/bladerunner/ambient_sounds.cpp
+++ b/engines/bladerunner/ambient_sounds.cpp
@@ -487,10 +487,8 @@ void AmbientSounds::load(SaveFileReadStream &f) {
f.skip(4); // track.nextPlayTime is not used after load
track.nextPlayTimeStart = now;
#if BLADERUNNER_ORIGINAL_BUGS
-#else
- sort(&(track.delayMin), &(track.delayMax));
-#endif // BLADERUNNER_ORIGINAL_BUGS
track.nextPlayTimeDiff = _vm->_rnd.getRandomNumberRng(track.delayMin, track.delayMax);
+#endif // BLADERUNNER_ORIGINAL_BUGS
track.volumeMin = f.readInt();
track.volumeMax = f.readInt();
track.volume = f.readInt();
@@ -498,15 +496,34 @@ void AmbientSounds::load(SaveFileReadStream &f) {
track.panStartMax = f.readInt();
track.panEndMin = f.readInt();
track.panEndMax = f.readInt();
-#if BLADERUNNER_ORIGINAL_BUGS
-#else
- sort(&(track.volumeMin), &(track.volumeMax));
- sort(&(track.panStartMin), &(track.panStartMax));
- sort(&(track.panEndMin), &(track.panEndMax));
-#endif // BLADERUNNER_ORIGINAL_BUGS
track.priority = f.readInt();
f.skip(4); // field_45
track.soundType = -1;
+#if !BLADERUNNER_ORIGINAL_BUGS
+ // Since unused ambient sound track fields are unitialized
+ // don't keep garbage field values for non-active tracks
+ // This was basically an issue when calling _vm->_rnd.getRandomNumberRng()
+ // with uninitialized fields, but it's a good practice to sanitize the fields here anyway
+ if (!track.isActive) {
+ track.delayMin = 0u;
+ track.delayMax = 0u;
+ track.nextPlayTimeDiff = 0u;
+ track.volumeMin = 0;
+ track.volumeMax = 0;
+ track.volume = 0;
+ track.panStartMin = 0;
+ track.panStartMax = 0;
+ track.panEndMin = 0;
+ track.panEndMax = 0;
+ track.priority = 0;
+ } else {
+ sort(&(track.delayMin), &(track.delayMax));
+ track.nextPlayTimeDiff = _vm->_rnd.getRandomNumberRng(track.delayMin, track.delayMax);
+ sort(&(track.volumeMin), &(track.volumeMax));
+ sort(&(track.panStartMin), &(track.panStartMax));
+ sort(&(track.panEndMin), &(track.panEndMax));
+ }
+#endif // !BLADERUNNER_ORIGINAL_BUGS
}
for (int i = 0; i != kLoopingSounds; ++i) {
@@ -519,6 +536,14 @@ void AmbientSounds::load(SaveFileReadStream &f) {
track.volume = f.readInt();
track.pan = f.readInt();
track.soundType = -1;
+#if !BLADERUNNER_ORIGINAL_BUGS
+ // Since unused ambient sound track fields are unitialized
+ // don't keep garbage field values for non-active tracks
+ if (!track.isActive) {
+ track.volume = 0;
+ track.pan = 0;
+ }
+#endif // !BLADERUNNER_ORIGINAL_BUGS
}
for (int i = 0; i != kLoopingSounds; ++i) {
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index eb30bd2595..8f47626010 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -1093,12 +1093,10 @@ int ScriptBase::Global_Variable_Decrement(int var, int dec) {
int ScriptBase::Random_Query(int min, int max) {
debugC(9, kDebugScript, "Random_Query(%d, %d)", min, max);
- if ( min == max )
- {
+ if ( min == max ) {
return min;
}
- if ( min > max ) // there is at least one such case
- {
+ if ( min > max ) { // there is at least one such case
return _vm->_rnd.getRandomNumberRng(max, min); // swap the arguments
}
return _vm->_rnd.getRandomNumberRng(min, max);
More information about the Scummvm-git-logs
mailing list