[Scummvm-git-logs] scummvm master -> 20e8482b3d77a34c30f47479abdc31ba04bbff10

elasota noreply at scummvm.org
Sat Jun 18 02:17:23 UTC 2022


This automated email contains information about 3 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
1b8fa06933 MTROPOLIS: Fix some Coverity errors
72fff89c04 MTROPOLIS: Fix set modifier source using the wrong string length field
20e8482b3d MTROPOLIS: Correctly parse quirky event format in set modifier


Commit: 1b8fa06933a2cd1d136e252dfa2a27bbae0220de
    https://github.com/scummvm/scummvm/commit/1b8fa06933a2cd1d136e252dfa2a27bbae0220de
Author: elasota (ejlasota at gmail.com)
Date: 2022-06-17T21:37:58-04:00

Commit Message:
MTROPOLIS: Fix some Coverity errors

Changed paths:
    engines/mtropolis/data.cpp
    engines/mtropolis/debug.cpp
    engines/mtropolis/elements.cpp
    engines/mtropolis/miniscript.cpp
    engines/mtropolis/plugin/standard.cpp
    engines/mtropolis/runtime.cpp


diff --git a/engines/mtropolis/data.cpp b/engines/mtropolis/data.cpp
index c04b7cb92c0..f91631c6b0f 100644
--- a/engines/mtropolis/data.cpp
+++ b/engines/mtropolis/data.cpp
@@ -1348,6 +1348,7 @@ DataReadErrorCode GraphicModifier::load(DataReader &reader) {
 	if (!reader.readU16(numPolygonPoints) || !reader.readBytes(unknown6))
 		return kDataReadErrorReadFailed;
 
+	// coverity[tainted_scalar]
 	polyPoints.resize(numPolygonPoints);
 	for (size_t i = 0; i < numPolygonPoints; i++) {
 		if (!polyPoints[i].load(reader))
@@ -1524,8 +1525,8 @@ DataReadErrorCode ColorTableAsset::load(DataReader &reader) {
 
 			const uint8 *rgb = cdefBytes + i * 8 + 2;
 			cdef.red = (rgb[0] << 8) | rgb[1];
-			cdef.green = (rgb[2] << 8) | rgb[5];
-			cdef.blue = (rgb[4] << 8) | rgb[6];
+			cdef.green = (rgb[2] << 8) | rgb[3];
+			cdef.blue = (rgb[4] << 8) | rgb[5];
 		}
 	} else if (reader.getProjectFormat() == Data::kProjectFormatWindows) {
 		if (!reader.skip(14))
diff --git a/engines/mtropolis/debug.cpp b/engines/mtropolis/debug.cpp
index f4ac3499671..43b94c6f6a4 100644
--- a/engines/mtropolis/debug.cpp
+++ b/engines/mtropolis/debug.cpp
@@ -272,6 +272,7 @@ void DebugToolWindowBase::render() {
 				srcLeft += adjust;
 			}
 			if (destLeft < 0) {
+				// coverity[dead_error_begin]
 				int32 adjust = -destLeft;
 				destLeft += adjust;
 				srcLeft += adjust;
diff --git a/engines/mtropolis/elements.cpp b/engines/mtropolis/elements.cpp
index 361167c2ac5..9b4f26fd996 100644
--- a/engines/mtropolis/elements.cpp
+++ b/engines/mtropolis/elements.cpp
@@ -1450,6 +1450,7 @@ MiniscriptInstructionOutcome MToonElement::scriptSetRangeTyped(MiniscriptThread
 		intRange.max = maxFrame;
 
 	if (isInvertedRange) {
+		// coverity[swapped_arguments]
 		_playRange = IntRange::create(intRange.max, intRange.min);
 		if (_rateTimes100000 > 0)
 			_rateTimes100000 = -_rateTimes100000;
diff --git a/engines/mtropolis/miniscript.cpp b/engines/mtropolis/miniscript.cpp
index 11f7e889fac..db79abb5b0a 100644
--- a/engines/mtropolis/miniscript.cpp
+++ b/engines/mtropolis/miniscript.cpp
@@ -991,9 +991,12 @@ MiniscriptInstructionOutcome BuiltinFunc::execute(MiniscriptThread *thread) cons
 		if (returnsValue)
 			valuesToPop--;
 
-		if (valuesToPop > 0)
+		if (valuesToPop > 0) {
+			// coverity[dead_error_line]
 			thread->popValues(valuesToPop);
+		}
 	} else {
+		// coverity[dead_error_line]
 		if (returnsValue)
 			thread->pushValue(staticDest);
 	}
@@ -1131,7 +1134,7 @@ MiniscriptInstructionOutcome BuiltinFunc::executeRectToPolar(MiniscriptThread *t
 
 	const Point16POD &pt = inputDynamicValue.getPoint();
 
-	double angle = atan2(pt.x, pt.y);
+	double angle = atan2(pt.y, pt.x);
 	double magnitude = sqrt(pt.x * pt.x + pt.y * pt.y);
 
 	returnValue->setVector(AngleMagVector::createRadians(angle, magnitude));
diff --git a/engines/mtropolis/plugin/standard.cpp b/engines/mtropolis/plugin/standard.cpp
index dbc58b9ff9e..a39b135bb65 100644
--- a/engines/mtropolis/plugin/standard.cpp
+++ b/engines/mtropolis/plugin/standard.cpp
@@ -583,7 +583,8 @@ bool ObjectReferenceVariableModifier::load(const PlugInModifierLoaderContext &co
 	if (data.setToSourceParentWhen.type != Data::PlugInTypeTaggedValue::kEvent)
 		return false;
 
-	_setToSourceParentWhen.load(data.setToSourceParentWhen.value.asEvent);
+	if (!_setToSourceParentWhen.load(data.setToSourceParentWhen.value.asEvent))
+		return false;
 
 	if (data.objectPath.type == Data::PlugInTypeTaggedValue::kString)
 		_objectPath = data.objectPath.str;
diff --git a/engines/mtropolis/runtime.cpp b/engines/mtropolis/runtime.cpp
index 86773b49a7d..a6353710907 100644
--- a/engines/mtropolis/runtime.cpp
+++ b/engines/mtropolis/runtime.cpp
@@ -602,7 +602,7 @@ bool DynamicListContainer<VarReference>::expandToMinimumSize(size_t sz) {
 		_array.resize(sz);
 		_strings.resize(sz);
 
-		for (size_t i = prevSize; i < sz; prevSize++) {
+		for (size_t i = prevSize; i < sz; i++) {
 			_array[i].guid = 0;
 			_array[i].source = nullptr;
 		}
@@ -3540,7 +3540,7 @@ Runtime::Runtime(OSystem *system, Audio::Mixer *mixer, ISaveUIProvider *saveProv
 	_playTimeBase = system->getMillis();
 
 	for (int i = 0; i < Actions::kMouseButtonCount; i++)
-		_mouseFocusFlags[Actions::kMouseButtonCount] = false;
+		_mouseFocusFlags[i] = false;
 	
 	_worldManagerInterface.reset(new WorldManagerInterface());
 	_worldManagerInterface->setSelfReference(_worldManagerInterface);
@@ -3805,7 +3805,8 @@ void Runtime::drawFrame() {
 		sortedBuckets[i].window = _windows[i].get();
 	}
 
-	Common::sort(sortedBuckets, sortedBuckets + numWindows, WindowSortingBucket::sortPredicate);
+	if (numWindows > 1)	// Quiet Coverity warning
+		Common::sort(sortedBuckets, sortedBuckets + numWindows, WindowSortingBucket::sortPredicate);
 	
 	for (size_t i = 0; i < numWindows; i++) {
 		const Window &window = *sortedBuckets[i].window;


Commit: 72fff89c044df03c9945bdc0c5d4030621404aa7
    https://github.com/scummvm/scummvm/commit/72fff89c044df03c9945bdc0c5d4030621404aa7
Author: elasota (ejlasota at gmail.com)
Date: 2022-06-17T21:37:58-04:00

Commit Message:
MTROPOLIS: Fix set modifier source using the wrong string length field

Changed paths:
    engines/mtropolis/data.cpp


diff --git a/engines/mtropolis/data.cpp b/engines/mtropolis/data.cpp
index f91631c6b0f..7822a99da2e 100644
--- a/engines/mtropolis/data.cpp
+++ b/engines/mtropolis/data.cpp
@@ -1046,7 +1046,7 @@ DataReadErrorCode SetModifier::load(DataReader &reader) {
 		|| !source.load(reader) || !target.load(reader) || !reader.readU8(unknown3)
 		|| !reader.readU8(sourceNameLength) || !reader.readU8(targetNameLength) || !reader.readU8(sourceStringLength)
 		|| !reader.readU8(targetStringLength)  || !reader.readU8(unknown4) || !reader.readNonTerminatedStr(sourceName, sourceNameLength)
-		|| !reader.readNonTerminatedStr(targetName, targetNameLength) || !reader.readNonTerminatedStr(sourceString, sourceNameLength)
+		|| !reader.readNonTerminatedStr(targetName, targetNameLength) || !reader.readNonTerminatedStr(sourceString, sourceStringLength)
 		|| !reader.readNonTerminatedStr(targetString, targetStringLength))
 		return kDataReadErrorReadFailed;
 


Commit: 20e8482b3d77a34c30f47479abdc31ba04bbff10
    https://github.com/scummvm/scummvm/commit/20e8482b3d77a34c30f47479abdc31ba04bbff10
Author: elasota (ejlasota at gmail.com)
Date: 2022-06-17T22:15:56-04:00

Commit Message:
MTROPOLIS: Correctly parse quirky event format in set modifier

Changed paths:
    engines/mtropolis/data.cpp


diff --git a/engines/mtropolis/data.cpp b/engines/mtropolis/data.cpp
index 7822a99da2e..dd28f88e56e 100644
--- a/engines/mtropolis/data.cpp
+++ b/engines/mtropolis/data.cpp
@@ -1042,8 +1042,9 @@ DataReadErrorCode SetModifier::load(DataReader &reader) {
 	if (_revision != 1000)
 		return kDataReadErrorUnsupportedRevision;
 
-	if (!modHeader.load(reader) || !reader.readBytes(unknown1) || !executeWhen.load(reader)
-		|| !source.load(reader) || !target.load(reader) || !reader.readU8(unknown3)
+	// NOTE: executeWhen is split in half and stored in 2 separate parts
+	if (!modHeader.load(reader) || !reader.readBytes(unknown1) || !reader.readU32(executeWhen.eventID)
+		|| !source.load(reader) || !target.load(reader) || !reader.readU32(executeWhen.eventInfo) || !reader.readU8(unknown3)
 		|| !reader.readU8(sourceNameLength) || !reader.readU8(targetNameLength) || !reader.readU8(sourceStringLength)
 		|| !reader.readU8(targetStringLength)  || !reader.readU8(unknown4) || !reader.readNonTerminatedStr(sourceName, sourceNameLength)
 		|| !reader.readNonTerminatedStr(targetName, targetNameLength) || !reader.readNonTerminatedStr(sourceString, sourceStringLength)




More information about the Scummvm-git-logs mailing list