[Scummvm-git-logs] scummvm master -> b2c5976ffc4eba47a81705be97b55f3a1ff6fca9
neuromancer
noreply at scummvm.org
Sat Sep 16 09:40:08 UTC 2023
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
050688cb72 FREESCAPE: delete unused object when parsing groups
cb5907eadd FREESCAPE: improved error handling in loadBundledImage
2467a05751 FREESCAPE: use references instead of pointers in restoreECD
46eabef441 FREESCAPE: assert to avoid null pointer derreference in restoreECD
6a61fe75a1 FREESCAPE: initialize extraColor local variable in load8bitArea
b2c5976ffc FREESCAPE: assert to avoid null pointer derreference in addWalls
Commit: 050688cb72217dca5e5ea385709d0285bf813c55
https://github.com/scummvm/scummvm/commit/050688cb72217dca5e5ea385709d0285bf813c55
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-09-16T11:39:28+02:00
Commit Message:
FREESCAPE: delete unused object when parsing groups
Changed paths:
engines/freescape/loaders/8bitBinaryLoader.cpp
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index ad3e4c23f75..41cfb8e533f 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -157,6 +157,7 @@ Group *FreescapeEngine::load8bitGroupV1(Common::SeekableReadStream *file, byte r
} else {
debugC(1, kFreescapeDebugParser, "Incomplete group operation %d", opcode);
byteSizeOfObject = 0;
+ delete operation;
continue;
}
}
@@ -238,6 +239,7 @@ Group *FreescapeEngine::load8bitGroupV2(Common::SeekableReadStream *file, byte r
byteSizeOfObject = byteSizeOfObject - 3;
} else {
byteSizeOfObject = 0;
+ delete operation;
continue;
}
}
Commit: cb5907eadd00b96225e05b7f4cc62949ceb1751d
https://github.com/scummvm/scummvm/commit/cb5907eadd00b96225e05b7f4cc62949ceb1751d
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-09-16T11:39:28+02:00
Commit Message:
FREESCAPE: improved error handling in loadBundledImage
Changed paths:
engines/freescape/assets.cpp
diff --git a/engines/freescape/assets.cpp b/engines/freescape/assets.cpp
index fe63bdd8710..ae9d740b1e9 100644
--- a/engines/freescape/assets.cpp
+++ b/engines/freescape/assets.cpp
@@ -128,11 +128,14 @@ void FreescapeEngine::loadDataBundle() {
Graphics::Surface *FreescapeEngine::loadBundledImage(const Common::String &name) {
Image::BitmapDecoder decoder;
Common::String bmpFilename = name + "_" + Common::getRenderModeDescription(_renderMode) + ".bmp";
- debug("Loading %s from bundled archive", bmpFilename.c_str());
- assert(_dataBundle->hasFile(bmpFilename));
+ debugC(1, kFreescapeDebugParser, "Loading %s from bundled archive", bmpFilename.c_str());
+ if (!_dataBundle->hasFile(bmpFilename))
+ error("Failed to open file %s from bundle", bmpFilename.c_str());
Common::SeekableReadStream *bmpFile = _dataBundle->createReadStreamForMember(bmpFilename);
- decoder.loadStream(*bmpFile);
+ if (!decoder.loadStream(*bmpFile))
+ error("Failed to decode bmp file %s from bundle", bmpFilename.c_str());
+
Graphics::Surface *surface = new Graphics::Surface();
surface->copyFrom(*decoder.getSurface());
decoder.destroy();
Commit: 2467a057518ae78244dab888d694d4c08e5bd18e
https://github.com/scummvm/scummvm/commit/2467a057518ae78244dab888d694d4c08e5bd18e
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-09-16T11:39:28+02:00
Commit Message:
FREESCAPE: use references instead of pointers in restoreECD
Changed paths:
engines/freescape/freescape.h
engines/freescape/games/dark/dark.cpp
diff --git a/engines/freescape/freescape.h b/engines/freescape/freescape.h
index 805c0c6bf30..7f4fe705e34 100644
--- a/engines/freescape/freescape.h
+++ b/engines/freescape/freescape.h
@@ -602,7 +602,7 @@ public:
private:
void addECDs(Area *area);
void addECD(Area *area, const Math::Vector3d position, int index);
- void restoreECD(Area *area, int index);
+ void restoreECD(Area &area, int index);
bool checkECD(uint16 areaID, int index);
bool tryDestroyECD(int index);
bool tryDestroyECDFullGame(int index);
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index e5dab377dac..daae805c17c 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -131,12 +131,12 @@ void DarkEngine::addECD(Area *area, const Math::Vector3d position, int index) {
}
}
-void DarkEngine::restoreECD(Area *area, int index) {
+void DarkEngine::restoreECD(Area &area, int index) {
Object *obj = nullptr;
int16 id = 227 + index * 6;
for (int i = 0; i < 4; i++) {
debugC(1, kFreescapeDebugParser, "Restoring object %d to from ECD %d", id, index);
- obj = (GeometricObject *)area->objectWithID(id);
+ obj = (GeometricObject *)area.objectWithID(id);
obj->restore();
obj->makeVisible();
id--;
@@ -359,15 +359,13 @@ void DarkEngine::addSkanner(Area *area) {
bool DarkEngine::checkIfGameEnded() {
if (_gameStateVars[kVariableDarkECD] > 0) {
int index = _gameStateVars[kVariableDarkECD] - 1;
- //insertTemporaryMessage(Common::String::format("%-14d", _gameStateVars[kVariableDarkECD] - 1), _countdown - 2);
- //restoreECD(_currentArea, _gameStateVars[kVariableDarkECD] - 1);
bool destroyed = tryDestroyECD(index);
if (destroyed) {
_gameStateVars[kVariableActiveECDs] -= 4;
_gameStateVars[k8bitVariableScore] += 52750;
insertTemporaryMessage(_messagesList[2], _countdown - 2);
} else {
- restoreECD(_currentArea, index);
+ restoreECD(*_currentArea, index);
insertTemporaryMessage(_messagesList[1], _countdown - 2);
}
_gameStateVars[kVariableDarkECD] = 0;
Commit: 46eabef44127f6d0aba709846f186e6fe0770796
https://github.com/scummvm/scummvm/commit/46eabef44127f6d0aba709846f186e6fe0770796
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-09-16T11:39:28+02:00
Commit Message:
FREESCAPE: assert to avoid null pointer derreference in restoreECD
Changed paths:
engines/freescape/games/dark/dark.cpp
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index daae805c17c..b361e8055eb 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -137,6 +137,7 @@ void DarkEngine::restoreECD(Area &area, int index) {
for (int i = 0; i < 4; i++) {
debugC(1, kFreescapeDebugParser, "Restoring object %d to from ECD %d", id, index);
obj = (GeometricObject *)area.objectWithID(id);
+ assert(obj);
obj->restore();
obj->makeVisible();
id--;
Commit: 6a61fe75a1f81154d59b1d4358c7570c581199df
https://github.com/scummvm/scummvm/commit/6a61fe75a1f81154d59b1d4358c7570c581199df
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-09-16T11:39:28+02:00
Commit Message:
FREESCAPE: initialize extraColor local variable in load8bitArea
Changed paths:
engines/freescape/loaders/8bitBinaryLoader.cpp
diff --git a/engines/freescape/loaders/8bitBinaryLoader.cpp b/engines/freescape/loaders/8bitBinaryLoader.cpp
index 41cfb8e533f..0fd74a05f06 100644
--- a/engines/freescape/loaders/8bitBinaryLoader.cpp
+++ b/engines/freescape/loaders/8bitBinaryLoader.cpp
@@ -546,7 +546,7 @@ Area *FreescapeEngine::load8bitArea(Common::SeekableReadStream *file, uint16 nco
uint8 gasPocketY = 0;
uint8 gasPocketRadius = 0;
// Castle specific
- uint8 extraColor[4];
+ uint8 extraColor[4] = {};
if (isEclipse()) {
byte idx = file->readByte();
name = idx < 8 ? eclipseRoomName[idx] : eclipseRoomName[8];
Commit: b2c5976ffc4eba47a81705be97b55f3a1ff6fca9
https://github.com/scummvm/scummvm/commit/b2c5976ffc4eba47a81705be97b55f3a1ff6fca9
Author: neuromancer (gustavo.grieco at gmail.com)
Date: 2023-09-16T11:39:28+02:00
Commit Message:
FREESCAPE: assert to avoid null pointer derreference in addWalls
Changed paths:
engines/freescape/games/dark/dark.cpp
diff --git a/engines/freescape/games/dark/dark.cpp b/engines/freescape/games/dark/dark.cpp
index b361e8055eb..018a3afc9dd 100644
--- a/engines/freescape/games/dark/dark.cpp
+++ b/engines/freescape/games/dark/dark.cpp
@@ -96,6 +96,7 @@ void DarkEngine::addWalls(Area *area) {
if (target > 0) {
area->addObjectFromArea(id, _areaMap[255]);
GeometricObject *gobj = (GeometricObject *)area->objectWithID(id);
+ assert(gobj);
assert((*(gobj->_condition[0]._thenInstructions))[0].getType() == Token::Type::GOTO);
assert((*(gobj->_condition[0]._thenInstructions))[0]._destination == 0);
(*(gobj->_condition[0]._thenInstructions))[0].setSource(target);
More information about the Scummvm-git-logs
mailing list