[Scummvm-git-logs] scummvm master -> 1700f0e29404b7c3a1dc7bcb1e8a747cdb3ab3f8

sluicebox noreply at scummvm.org
Thu Apr 13 21:27:35 UTC 2023


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

Summary:
f05625a32b SCI: Initialize Script::_codeOffset
28dc3f946b SCI32: ChunkedResourceSource error handling
c2526b1fa0 SCI32: kFileIOReadRaw error handling
1700f0e294 SCI: MidiPlayer_FMTowns error handling


Commit: f05625a32b2ea53df2d861fa2e66e0b406af3278
    https://github.com/scummvm/scummvm/commit/f05625a32b2ea53df2d861fa2e66e0b406af3278
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-04-13T14:26:21-07:00

Commit Message:
SCI: Initialize Script::_codeOffset

Coverity issue 1365197

Changed paths:
    engines/sci/engine/script.cpp


diff --git a/engines/sci/engine/script.cpp b/engines/sci/engine/script.cpp
index 01e3bcf42f3..a10ba8df074 100644
--- a/engines/sci/engine/script.cpp
+++ b/engines/sci/engine/script.cpp
@@ -57,6 +57,8 @@ void Script::freeScript(const bool keepLocalsSegment) {
 	_synonyms.clear();
 	_numSynonyms = 0;
 
+	_codeOffset = 0;
+
 	_localsOffset = 0;
 	if (!keepLocalsSegment) {
 		_localsSegment = 0;


Commit: 28dc3f946b4d1cf504187b54e11c1b362a210017
    https://github.com/scummvm/scummvm/commit/28dc3f946b4d1cf504187b54e11c1b362a210017
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-04-13T14:26:22-07:00

Commit Message:
SCI32: ChunkedResourceSource error handling

Coverity issue 1003613

Changed paths:
    engines/sci/resource/resource.cpp


diff --git a/engines/sci/resource/resource.cpp b/engines/sci/resource/resource.cpp
index ef51771f422..2afcd6b2d41 100644
--- a/engines/sci/resource/resource.cpp
+++ b/engines/sci/resource/resource.cpp
@@ -927,7 +927,7 @@ ChunkResourceSource::ChunkResourceSource(const Common::String &name, uint16 numb
 void ChunkResourceSource::scanSource(ResourceManager *resMan) {
 	Resource *chunk = resMan->findResource(ResourceId(kResourceTypeChunk, _number), false);
 
-	if (!chunk)
+	if (chunk == nullptr)
 		error("Trying to load non-existent chunk");
 
 	const byte *ptr = chunk->data();
@@ -963,11 +963,13 @@ void ChunkResourceSource::scanSource(ResourceManager *resMan) {
 
 void ChunkResourceSource::loadResource(ResourceManager *resMan, Resource *res) {
 	Resource *chunk = resMan->findResource(ResourceId(kResourceTypeChunk, _number), false);
+	if (chunk == nullptr)
+		error("Trying to load non-existent chunk");
 
-	if (!_resMap.contains(res->_id))
+	ResourceEntry entry;
+	if (!_resMap.tryGetVal(res->_id, entry))
 		error("Trying to load non-existent resource %s from chunk %d", res->_id.toString().c_str(), _number);
 
-	ResourceEntry entry = _resMap[res->_id];
 	if (entry.offset + entry.length > chunk->size()) {
 		error("Resource %s is too large to exist within chunk %d (%u + %u > %u)", res->_id.toString().c_str(), _number, entry.offset, entry.length, chunk->size());
 	}


Commit: c2526b1fa0a94a91ef9a3528a1399cb176d01dcb
    https://github.com/scummvm/scummvm/commit/c2526b1fa0a94a91ef9a3528a1399cb176d01dcb
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-04-13T14:26:22-07:00

Commit Message:
SCI32: kFileIOReadRaw error handling

Coverity issue 1422008

Changed paths:
    engines/sci/engine/kfile.cpp


diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp
index 287d689aa7e..8436b18a67c 100644
--- a/engines/sci/engine/kfile.cpp
+++ b/engines/sci/engine/kfile.cpp
@@ -598,6 +598,9 @@ reg_t kFileIOReadRaw(EngineState *s, int argc, reg_t *argv) {
 #ifdef ENABLE_SCI32
 		SegmentRef destReference = s->_segMan->dereference(dest);
 		SegmentObj *destObject = s->_segMan->getSegmentObj(dest.getSegment());
+		if (destObject == nullptr) {
+			error("kFileIO(readRaw): invalid destination %04x:%04x", PRINT_REG(dest));
+		}
 
 		if (destReference.maxSize == size - 4 && destObject->getType() == SEG_TYPE_ARRAY) {
 			// This is an array structure, which starts with the number of


Commit: 1700f0e29404b7c3a1dc7bcb1e8a747cdb3ab3f8
    https://github.com/scummvm/scummvm/commit/1700f0e29404b7c3a1dc7bcb1e8a747cdb3ab3f8
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2023-04-13T14:26:23-07:00

Commit Message:
SCI: MidiPlayer_FMTowns error handling

Coverity issue 1373262

Changed paths:
    engines/sci/sound/drivers/fmtowns.cpp


diff --git a/engines/sci/sound/drivers/fmtowns.cpp b/engines/sci/sound/drivers/fmtowns.cpp
index d168d934f80..f1c7da925c1 100644
--- a/engines/sci/sound/drivers/fmtowns.cpp
+++ b/engines/sci/sound/drivers/fmtowns.cpp
@@ -624,8 +624,15 @@ int MidiPlayer_FMTowns::open(ResourceManager *resMan) {
 	int result = MidiDriver::MERR_DEVICE_NOT_AVAILABLE;
 	if (_townsDriver) {
 		result = _townsDriver->open();
-		if (!result && _version == SCI_VERSION_1_LATE)
-			_townsDriver->loadInstruments(*resMan->findResource(ResourceId(kResourceTypePatch, 8), false));
+		if (!result && _version == SCI_VERSION_1_LATE) {
+			Resource *res = resMan->findResource(ResourceId(kResourceTypePatch, 8), false);
+			if (res != nullptr) {
+				_townsDriver->loadInstruments(*res);
+			} else {
+				warning("MidiPlayer_FMTowns: Failed to open patch 8");
+				result = MidiDriver::MERR_DEVICE_NOT_AVAILABLE;
+			}
+		}
 	}
 	return result;
 }




More information about the Scummvm-git-logs mailing list