[Scummvm-git-logs] scummvm master -> abfa7b38c8a2864177a05d87af86075168652516
Helco
noreply at scummvm.org
Sat Sep 13 05:39:03 UTC 2025
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
60376dba3d ALCACHOFA: Fix issues reported by coverity
abfa7b38c8 ALCACHOFA: Fix assertion in GLES2 renderer upon fadeExit
Commit: 60376dba3dc7d8f9078991f3268ec8b4474fb911
https://github.com/scummvm/scummvm/commit/60376dba3dc7d8f9078991f3268ec8b4474fb911
Author: Helco (hermann.noll at hotmail.com)
Date: 2025-09-13T07:38:46+02:00
Commit Message:
ALCACHOFA: Fix issues reported by coverity
- Memory leak in
- Menu::tryReadOldSavefile
- AlcachofaEngine::syncGame
- loadSND
- Uninitialized variables
- StackEntry
- Process
- OptionsMenu
- Potential null-pointer deref in DoorTask ctor
- Using moved-from object in Sounds::playSoundInternal
- Potential fp division by zero in depthAtForConvex
Changed paths:
engines/alcachofa/alcachofa.cpp
engines/alcachofa/menu.cpp
engines/alcachofa/metaengine.cpp
engines/alcachofa/player.cpp
engines/alcachofa/rooms.h
engines/alcachofa/scheduler.cpp
engines/alcachofa/script.cpp
engines/alcachofa/shape.cpp
engines/alcachofa/sounds.cpp
diff --git a/engines/alcachofa/alcachofa.cpp b/engines/alcachofa/alcachofa.cpp
index fa25a74926b..dc26d582dde 100644
--- a/engines/alcachofa/alcachofa.cpp
+++ b/engines/alcachofa/alcachofa.cpp
@@ -297,10 +297,11 @@ Common::Error AlcachofaEngine::syncGame(MySerializer &s) {
thumbnail = new Graphics::ManagedSurface();
getSavegameThumbnail(*thumbnail->surfacePtr());
}
- if (!syncThumbnail(s, thumbnail))
- return { kUnknownError, "Could not read thumbnail" };
+ bool couldSyncThumbnail = syncThumbnail(s, thumbnail);
if (thumbnail != nullptr)
delete thumbnail;
+ if (!couldSyncThumbnail)
+ return { kUnknownError, "Could not read thumbnail" };
uint32 millis = menu().isOpen()
? menu().millisBeforeMenu()
diff --git a/engines/alcachofa/menu.cpp b/engines/alcachofa/menu.cpp
index faed5b72891..471b492665c 100644
--- a/engines/alcachofa/menu.cpp
+++ b/engines/alcachofa/menu.cpp
@@ -147,7 +147,7 @@ bool Menu::tryReadOldSavefile() {
return false;
ExtendedSavegameHeader header;
- if (!g_engine->getMetaEngine()->readSavegameHeader(savefile.get(), &header, false))
+ if (!g_engine->getMetaEngine()->readSavegameHeader(savefile.get(), &header, true))
return false;
_selectedSavefileDescription = header.description;
diff --git a/engines/alcachofa/metaengine.cpp b/engines/alcachofa/metaengine.cpp
index 0280617af4e..0e5641c64b9 100644
--- a/engines/alcachofa/metaengine.cpp
+++ b/engines/alcachofa/metaengine.cpp
@@ -115,10 +115,9 @@ void AlcachofaMetaEngine::getSavegameThumbnail(Surface &surf) {
if (Alcachofa::g_engine != nullptr) {
Surface bigThumbnail;
Alcachofa::g_engine->getSavegameThumbnail(bigThumbnail);
- if (bigThumbnail.getPixels() != nullptr) {
+ if (bigThumbnail.getPixels() != nullptr)
surf = *bigThumbnail.scale(kSmallThumbnailWidth, kSmallThumbnailHeight, true);
- bigThumbnail.free();
- }
+ bigThumbnail.free();
}
// if not, ScummVM will output an appropriate warning
}
diff --git a/engines/alcachofa/player.cpp b/engines/alcachofa/player.cpp
index 13757fd92e8..80f7f519a67 100644
--- a/engines/alcachofa/player.cpp
+++ b/engines/alcachofa/player.cpp
@@ -215,7 +215,9 @@ struct DoorTask : public Task {
, _targetObject(nullptr)
, _targetDirection(Direction::Invalid) {
findTarget();
- process.name() = String::format("Door to %s %s", _targetRoom->name().c_str(), _targetObject->name().c_str());
+ process.name() = String::format("Door to %s %s",
+ _targetRoom == nullptr ? "<null>" : _targetRoom->name().c_str(),
+ _targetObject == nullptr ? "<null>" : _targetObject->name().c_str());
}
DoorTask(Process &process, Serializer &s)
diff --git a/engines/alcachofa/rooms.h b/engines/alcachofa/rooms.h
index 649c1944c40..2ca7ee43cb1 100644
--- a/engines/alcachofa/rooms.h
+++ b/engines/alcachofa/rooms.h
@@ -101,7 +101,7 @@ public:
private:
ShapeObject *_lastSelectedObject = nullptr;
ObjectBase *_idleArm = nullptr;
- SlideButton *_currentSlideButton;
+ SlideButton *_currentSlideButton = nullptr;
};
class ConnectMenu final : public Room {
diff --git a/engines/alcachofa/scheduler.cpp b/engines/alcachofa/scheduler.cpp
index 81b5f38bc9e..7266ca1b0be 100644
--- a/engines/alcachofa/scheduler.cpp
+++ b/engines/alcachofa/scheduler.cpp
@@ -90,7 +90,9 @@ Process::Process(ProcessId pid, MainCharacterKind characterKind)
, _character(characterKind)
, _name("Unnamed process") {}
-Process::Process(Serializer &s) {
+Process::Process(Serializer &s)
+ : _pid(0)
+ , _character(MainCharacterKind::None) {
syncGame(s);
}
diff --git a/engines/alcachofa/script.cpp b/engines/alcachofa/script.cpp
index 0b0411f356c..2296266940b 100644
--- a/engines/alcachofa/script.cpp
+++ b/engines/alcachofa/script.cpp
@@ -184,7 +184,7 @@ enum class StackEntryType {
struct StackEntry {
StackEntry(StackEntryType type, int32 number) : _type(type), _number(number) {}
StackEntry(StackEntryType type, uint32 index) : _type(type), _index(index) {}
- StackEntry(Serializer &s) { syncGame(s); }
+ StackEntry(Serializer &s) : _type(), _number(0) { syncGame(s); }
void syncGame(Serializer &s) {
syncEnum(s, _type);
diff --git a/engines/alcachofa/shape.cpp b/engines/alcachofa/shape.cpp
index 8d52dd036dd..5db327f47e3 100644
--- a/engines/alcachofa/shape.cpp
+++ b/engines/alcachofa/shape.cpp
@@ -155,7 +155,8 @@ static float depthAtForConvex(const PathFindingPolygon &p, Point q) {
sumDepths += 1 / distances._toEdge * depthOnEdge;
sumDistances += 1 / distances._toEdge;
}
- return sumDepths / sumDistances * 0.01f;
+ return sumDistances < epsilon ? 0
+ : sumDepths / sumDistances * 0.01f;
}
float PathFindingPolygon::depthAt(Point query) const {
diff --git a/engines/alcachofa/sounds.cpp b/engines/alcachofa/sounds.cpp
index dd14db3e5ab..b26795fc006 100644
--- a/engines/alcachofa/sounds.cpp
+++ b/engines/alcachofa/sounds.cpp
@@ -106,7 +106,7 @@ static AudioStream *loadSND(File *file) {
else if (format == 17 && channels <= 2)
return makeADPCMStream(subStream, DisposeAfterUse::YES, 0, kADPCMMSIma, (int)freq, (int)channels, (uint32)bytesPerBlock);
else {
- delete file;
+ delete subStream;
g_engine->game().invalidSNDFormat(format, channels, freq, bitsPerSample);
return nullptr;
}
@@ -186,13 +186,15 @@ SoundHandle Sounds::playSoundInternal(const char *fileName, byte volume, Mixer::
}
}
+ SoundHandle handle;
+ _mixer->playStream(type, &handle, stream, -1, volume);
Playback playback;
- _mixer->playStream(type, &playback._handle, stream, -1, volume);
+ playback._handle = handle;
playback._type = type;
playback._inputRate = stream->getRate();
playback._samples = Common::move(samples);
_playbacks.push_back(Common::move(playback));
- return playback._handle;
+ return handle;
}
SoundHandle Sounds::playVoice(const String &fileName, byte volume) {
Commit: abfa7b38c8a2864177a05d87af86075168652516
https://github.com/scummvm/scummvm/commit/abfa7b38c8a2864177a05d87af86075168652516
Author: Helco (hermann.noll at hotmail.com)
Date: 2025-09-13T07:38:46+02:00
Commit Message:
ALCACHOFA: Fix assertion in GLES2 renderer upon fadeExit
Changed paths:
engines/alcachofa/graphics-opengl-shaders.cpp
diff --git a/engines/alcachofa/graphics-opengl-shaders.cpp b/engines/alcachofa/graphics-opengl-shaders.cpp
index 5151737c0f7..ea12fd0ee16 100644
--- a/engines/alcachofa/graphics-opengl-shaders.cpp
+++ b/engines/alcachofa/graphics-opengl-shaders.cpp
@@ -78,7 +78,8 @@ public:
}
void end() override {
- checkFirstDrawCommand();
+ if (!_vertices.empty()) // submit last batch
+ checkFirstDrawCommand();
OpenGLRenderer::end();
}
More information about the Scummvm-git-logs
mailing list