[Scummvm-git-logs] scummvm master -> 6c76adfa4ffe6221ce2987d4ae94b263f8eeb511
Helco
noreply at scummvm.org
Tue Sep 16 11:10:36 UTC 2025
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
d0d6aec72e ALCACHOFA: Qualify virtual method calls in constructors. PVS-Studio V1053
662bc5fac6 ALCACHOFA: Initialize all members in structs. PVS-Studio V730
be9f412881 ALCACHOFA: Suppress false-positive unreachable-code and identical-sub-expression warnings. PVS-Studio V501, V779
b7790efa5e ALCACHOFA: Add copy assignment to classes with copy ctor. PVS-Studio V690
e22c35f8fb ALCACHOFA: Fix one-off warnings. PVS-Studio V558, V1009, V699, V764, V595, V773, V1037, V560, V668
6c76adfa4f ALCACHOFA: Fix potential null-pointer dereferences. PVS-Studio V522
Commit: d0d6aec72e8cdec0d7d3bd3ae2166c12e5436cdd
https://github.com/scummvm/scummvm/commit/d0d6aec72e8cdec0d7d3bd3ae2166c12e5436cdd
Author: Helco (hermann.noll at hotmail.com)
Date: 2025-09-16T12:04:12+02:00
Commit Message:
ALCACHOFA: Qualify virtual method calls in constructors. PVS-Studio V1053
Changed paths:
engines/alcachofa/alcachofa.cpp
engines/alcachofa/game-objects.cpp
engines/alcachofa/general-objects.cpp
engines/alcachofa/global-ui.cpp
engines/alcachofa/graphics.cpp
engines/alcachofa/player.cpp
engines/alcachofa/scheduler.h
engines/alcachofa/script.cpp
diff --git a/engines/alcachofa/alcachofa.cpp b/engines/alcachofa/alcachofa.cpp
index 2bb9096fe41..486688eaab0 100644
--- a/engines/alcachofa/alcachofa.cpp
+++ b/engines/alcachofa/alcachofa.cpp
@@ -435,7 +435,7 @@ DelayTask::DelayTask(Process &process, uint32 millis)
DelayTask::DelayTask(Process &process, Serializer &s)
: Task(process) {
- syncGame(s);
+ DelayTask::syncGame(s);
}
TaskReturn DelayTask::run() {
diff --git a/engines/alcachofa/game-objects.cpp b/engines/alcachofa/game-objects.cpp
index 1954551be68..18d08184548 100644
--- a/engines/alcachofa/game-objects.cpp
+++ b/engines/alcachofa/game-objects.cpp
@@ -767,14 +767,14 @@ void WalkingCharacter::syncGame(Serializer &serializer) {
syncEnum(serializer, _direction);
}
-struct ArriveTask : public Task {
+struct ArriveTask final : public Task {
ArriveTask(Process &process, const WalkingCharacter *character)
: Task(process)
, _character(character) {}
ArriveTask(Process &process, Serializer &s)
: Task(process) {
- syncGame(s);
+ ArriveTask::syncGame(s);
}
TaskReturn run() override {
@@ -1025,7 +1025,7 @@ bool MainCharacter::clearTargetIf(const ITriggerableObject *target) {
return false;
}
-struct DialogMenuTask : public Task {
+struct DialogMenuTask final : public Task {
DialogMenuTask(Process &process, MainCharacter *character)
: Task(process)
, _input(g_engine->input())
@@ -1034,7 +1034,7 @@ struct DialogMenuTask : public Task {
DialogMenuTask(Process &process, Serializer &s)
: Task(process)
, _input(g_engine->input()) {
- syncGame(s);
+ DialogMenuTask::syncGame(s);
}
TaskReturn run() override {
diff --git a/engines/alcachofa/general-objects.cpp b/engines/alcachofa/general-objects.cpp
index fde931008eb..0b8aee369ce 100644
--- a/engines/alcachofa/general-objects.cpp
+++ b/engines/alcachofa/general-objects.cpp
@@ -151,7 +151,7 @@ Graphic *GraphicObject::graphic() {
return &_graphic;
}
-struct AnimateTask : public Task {
+struct AnimateTask final : public Task {
AnimateTask(Process &process, GraphicObject *object)
: Task(process)
, _object(object) {
@@ -163,7 +163,7 @@ struct AnimateTask : public Task {
AnimateTask(Process &process, Serializer &s)
: Task(process) {
- syncGame(s);
+ AnimateTask::syncGame(s);
}
TaskReturn run() override {
diff --git a/engines/alcachofa/global-ui.cpp b/engines/alcachofa/global-ui.cpp
index 938fefd8fc1..7d9f7654697 100644
--- a/engines/alcachofa/global-ui.cpp
+++ b/engines/alcachofa/global-ui.cpp
@@ -190,7 +190,7 @@ void GlobalUI::drawChangingButton() {
g_engine->drawQueue().add<AnimationDrawRequest>(_changeButton, false, BlendMode::AdditiveAlpha);
}
-struct CenterBottomTextTask : public Task {
+struct CenterBottomTextTask final : public Task {
CenterBottomTextTask(Process &process, int32 dialogId, uint32 durationMs)
: Task(process)
, _dialogId(dialogId)
@@ -198,7 +198,7 @@ struct CenterBottomTextTask : public Task {
CenterBottomTextTask(Process &process, Serializer &s)
: Task(process) {
- syncGame(s);
+ CenterBottomTextTask::syncGame(s);
}
TaskReturn run() override {
diff --git a/engines/alcachofa/graphics.cpp b/engines/alcachofa/graphics.cpp
index ebbf2e6e8c3..7057d8aaa92 100644
--- a/engines/alcachofa/graphics.cpp
+++ b/engines/alcachofa/graphics.cpp
@@ -795,7 +795,7 @@ void FadeDrawRequest::draw() {
g_engine->renderer().quad(Vector2d(0, 0), as2D(Point(g_system->getWidth(), g_system->getHeight())), color);
}
-struct FadeTask : public Task {
+struct FadeTask final : public Task {
FadeTask(Process &process, FadeType fadeType,
float from, float to,
uint32 duration, EasingType easingType,
@@ -812,7 +812,7 @@ struct FadeTask : public Task {
FadeTask(Process &process, Serializer &s)
: Task(process) {
- syncGame(s);
+ FadeTask::syncGame(s);
}
TaskReturn run() override {
diff --git a/engines/alcachofa/player.cpp b/engines/alcachofa/player.cpp
index 80f7f519a67..2a172c43ea9 100644
--- a/engines/alcachofa/player.cpp
+++ b/engines/alcachofa/player.cpp
@@ -205,7 +205,7 @@ void Player::triggerObject(ObjectBase *object, const char *action) {
script.createProcess(activeCharacterKind(), "DefectoUsar");
}
-struct DoorTask : public Task {
+struct DoorTask final : public Task {
DoorTask(Process &process, const Door *door, FakeLock &&lock)
: Task(process)
, _lock(move(lock))
@@ -223,7 +223,7 @@ struct DoorTask : public Task {
DoorTask(Process &process, Serializer &s)
: Task(process)
, _player(g_engine->player()) {
- syncGame(s);
+ DoorTask::syncGame(s);
}
TaskReturn run() override {
diff --git a/engines/alcachofa/scheduler.h b/engines/alcachofa/scheduler.h
index f29194a92f8..fa88887be44 100644
--- a/engines/alcachofa/scheduler.h
+++ b/engines/alcachofa/scheduler.h
@@ -115,7 +115,7 @@ private:
// implemented in alcachofa.cpp to prevent a compiler warning when
// the declaration of the construct function comes after the definition
-struct DelayTask : public Task {
+struct DelayTask final : public Task {
DelayTask(Process &process, uint32 millis);
DelayTask(Process &process, Common::Serializer &s);
TaskReturn run() override;
diff --git a/engines/alcachofa/script.cpp b/engines/alcachofa/script.cpp
index 2296266940b..f08c9ccafbe 100644
--- a/engines/alcachofa/script.cpp
+++ b/engines/alcachofa/script.cpp
@@ -130,14 +130,14 @@ bool Script::hasProcedure(const Common::String &procedure) const {
return _procedures.contains(procedure);
}
-struct ScriptTimerTask : public Task {
+struct ScriptTimerTask final : public Task {
ScriptTimerTask(Process &process, int32 durationSec)
: Task(process)
, _durationSec(durationSec) {}
ScriptTimerTask(Process &process, Serializer &s)
: Task(process) {
- syncGame(s);
+ ScriptTimerTask::syncGame(s);
}
TaskReturn run() override {
@@ -201,7 +201,7 @@ struct StackEntry {
};
};
-struct ScriptTask : public Task {
+struct ScriptTask final : public Task {
ScriptTask(Process &process, const String &name, uint32 pc, FakeLock &&lock)
: Task(process)
, _script(g_engine->script())
@@ -227,7 +227,7 @@ struct ScriptTask : public Task {
ScriptTask(Process &process, Serializer &s)
: Task(process)
, _script(g_engine->script()) {
- syncGame(s);
+ ScriptTask::syncGame(s);
}
TaskReturn run() override {
Commit: 662bc5fac6d0311bd7d288ecbe99b3e95cb710d2
https://github.com/scummvm/scummvm/commit/662bc5fac6d0311bd7d288ecbe99b3e95cb710d2
Author: Helco (hermann.noll at hotmail.com)
Date: 2025-09-16T12:04:12+02:00
Commit Message:
ALCACHOFA: Initialize all members in structs. PVS-Studio V730
Changed paths:
engines/alcachofa/debug.h
engines/alcachofa/objects.h
engines/alcachofa/sounds.h
diff --git a/engines/alcachofa/debug.h b/engines/alcachofa/debug.h
index 8ebc8adc7d0..d3f59192b15 100644
--- a/engines/alcachofa/debug.h
+++ b/engines/alcachofa/debug.h
@@ -160,7 +160,7 @@ class FloorColorDebugHandler final : public IDebugHandler {
Color _curColor = kDebugGreen;
bool _isOnFloor = false;
static constexpr size_t kBufferSize = 64;
- char _buffer[kBufferSize];
+ char _buffer[kBufferSize] = { 0 };
FloorColorDebugHandler(const FloorColorShape &shape, bool useColor)
: _shape(shape)
diff --git a/engines/alcachofa/objects.h b/engines/alcachofa/objects.h
index cb0af316396..ad6672e6ba5 100644
--- a/engines/alcachofa/objects.h
+++ b/engines/alcachofa/objects.h
@@ -520,7 +520,7 @@ protected:
};
struct DialogMenuLine {
- int32 _dialogId;
+ int32 _dialogId = -1;
int32 _yPosition = 0;
int32 _returnValue = 0;
};
diff --git a/engines/alcachofa/sounds.h b/engines/alcachofa/sounds.h
index 895b0bf5e3c..693fd1a934a 100644
--- a/engines/alcachofa/sounds.h
+++ b/engines/alcachofa/sounds.h
@@ -68,7 +68,7 @@ private:
Audio::Mixer::SoundType _type = Audio::Mixer::SoundType::kPlainSoundType;
uint32 _fadeStart = 0,
_fadeDuration = 0;
- int _inputRate;
+ int _inputRate = 0;
Common::Array<int16> _samples; ///< might not be filled, only voice samples are preloaded for lip-sync
};
Playback *getPlaybackById(SoundHandle id);
Commit: be9f4128810c5d7653e802dbc3ce141a1670d1d4
https://github.com/scummvm/scummvm/commit/be9f4128810c5d7653e802dbc3ce141a1670d1d4
Author: Helco (hermann.noll at hotmail.com)
Date: 2025-09-16T12:04:12+02:00
Commit Message:
ALCACHOFA: Suppress false-positive unreachable-code and identical-sub-expression warnings. PVS-Studio V501, V779
Changed paths:
engines/alcachofa/game-objects.cpp
engines/alcachofa/general-objects.cpp
engines/alcachofa/player.cpp
engines/alcachofa/script.cpp
diff --git a/engines/alcachofa/game-objects.cpp b/engines/alcachofa/game-objects.cpp
index 18d08184548..8bfd05ca866 100644
--- a/engines/alcachofa/game-objects.cpp
+++ b/engines/alcachofa/game-objects.cpp
@@ -330,7 +330,7 @@ struct SayTextTask final : public Task {
if (!_character->_isTalking) {
g_engine->sounds().fadeOut(_soundHandle, 100);
TASK_WAIT(1, delay(200));
- TASK_RETURN(0);
+ TASK_RETURN(0); //-V779
}
_character->isSpeaking() = !isSoundStillPlaying ||
@@ -406,7 +406,7 @@ struct AnimateCharacterTask final : public Task {
_graphic->update();
do {
TASK_YIELD(2);
- if (process().isActiveForPlayer() && g_engine->input().wasAnyMouseReleased())
+ if (process().isActiveForPlayer() && g_engine->input().wasAnyMouseReleased()) //-V779
_graphic->pause();
} while (!_graphic->isPaused());
@@ -1042,7 +1042,7 @@ struct DialogMenuTask final : public Task {
layoutLines();
while (true) {
TASK_YIELD(1);
- if (g_engine->player().activeCharacter() != _character)
+ if (g_engine->player().activeCharacter() != _character) //-V779
continue;
g_engine->globalUI().updateChangingCharacter();
g_engine->player().heldItem() = nullptr;
diff --git a/engines/alcachofa/general-objects.cpp b/engines/alcachofa/general-objects.cpp
index 0b8aee369ce..8ef4fe55f02 100644
--- a/engines/alcachofa/general-objects.cpp
+++ b/engines/alcachofa/general-objects.cpp
@@ -171,7 +171,7 @@ struct AnimateTask final : public Task {
_object->toggle(true);
_graphic->start(false);
TASK_WAIT(1, delay(_duration));
- _object->toggle(false);
+ _object->toggle(false); //-V779
TASK_END;
}
diff --git a/engines/alcachofa/player.cpp b/engines/alcachofa/player.cpp
index 2a172c43ea9..9f6bdb16c6b 100644
--- a/engines/alcachofa/player.cpp
+++ b/engines/alcachofa/player.cpp
@@ -235,7 +235,7 @@ struct DoorTask final : public Task {
if (g_engine->sounds().musicID() != _targetRoom->musicID())
g_engine->sounds().fadeMusic();
TASK_WAIT(1, fade(process(), FadeType::ToBlack, 0, 1, 500, EasingType::Out, -5));
- _player.changeRoom(_targetRoom->name(), true);
+ _player.changeRoom(_targetRoom->name(), true); //-V779
if (_targetRoom->fixedCameraOnEntering())
g_engine->camera().setPosition(as2D(_targetObject->interactionPoint()));
diff --git a/engines/alcachofa/script.cpp b/engines/alcachofa/script.cpp
index f08c9ccafbe..6606971322d 100644
--- a/engines/alcachofa/script.cpp
+++ b/engines/alcachofa/script.cpp
@@ -152,7 +152,7 @@ struct ScriptTimerTask final : public Task {
g_engine->player().drawCursor();
}
TASK_YIELD(1); // Wait a frame to not produce an endless loop
- TASK_RETURN(_result);
+ TASK_RETURN(_result); //-V779
TASK_END;
}
@@ -337,28 +337,28 @@ struct ScriptTask final : public Task {
pushNumber(-popNumber() + popNumber());
break;
case ScriptOp::Less:
- pushNumber(popNumber() > popNumber());
+ pushNumber(popNumber() > popNumber()); //-V501
break;
case ScriptOp::Greater:
- pushNumber(popNumber() < popNumber());
+ pushNumber(popNumber() < popNumber()); //-V501
break;
case ScriptOp::LessEquals:
- pushNumber(popNumber() >= popNumber());
+ pushNumber(popNumber() >= popNumber()); //-V501
break;
case ScriptOp::GreaterEquals:
- pushNumber(popNumber() <= popNumber());
+ pushNumber(popNumber() <= popNumber()); //-V501
break;
case ScriptOp::Equals:
- pushNumber(popNumber() == popNumber());
+ pushNumber(popNumber() == popNumber()); //-V501
break;
case ScriptOp::NotEquals:
- pushNumber(popNumber() != popNumber());
+ pushNumber(popNumber() != popNumber()); //-V501
break;
case ScriptOp::BitAnd:
- pushNumber(popNumber() & popNumber());
+ pushNumber(popNumber() & popNumber()); //-V501
break;
case ScriptOp::BitOr:
- pushNumber(popNumber() | popNumber());
+ pushNumber(popNumber() | popNumber()); //-V501
break;
case ScriptOp::Return: {
int32 returnValue = popNumber();
Commit: b7790efa5edc604b1319c399291865be94d7f7eb
https://github.com/scummvm/scummvm/commit/b7790efa5edc604b1319c399291865be94d7f7eb
Author: Helco (hermann.noll at hotmail.com)
Date: 2025-09-16T12:04:12+02:00
Commit Message:
ALCACHOFA: Add copy assignment to classes with copy ctor. PVS-Studio V690
Changed paths:
engines/alcachofa/common.cpp
engines/alcachofa/common.h
engines/alcachofa/graphics.cpp
engines/alcachofa/graphics.h
engines/alcachofa/objects.h
diff --git a/engines/alcachofa/common.cpp b/engines/alcachofa/common.cpp
index 9973fe98fc2..dc4b8c5a0a7 100644
--- a/engines/alcachofa/common.cpp
+++ b/engines/alcachofa/common.cpp
@@ -100,6 +100,16 @@ void FakeLock::operator= (FakeLock &&other) {
debug("move-assign");
}
+FakeLock &FakeLock::operator= (const FakeLock &other) {
+ release();
+ _name = other._name;
+ _semaphore = other._semaphore;
+ if (_semaphore != nullptr)
+ _semaphore->_counter++;
+ debug("copy-assign");
+ return *this;
+}
+
void FakeLock::release() {
if (_semaphore == nullptr)
return;
diff --git a/engines/alcachofa/common.h b/engines/alcachofa/common.h
index 4009645aaaf..a28ac48fe79 100644
--- a/engines/alcachofa/common.h
+++ b/engines/alcachofa/common.h
@@ -101,7 +101,8 @@ struct FakeLock {
FakeLock(const FakeLock &other);
FakeLock(FakeLock &&other);
~FakeLock();
- void operator = (FakeLock &&other);
+ void operator= (FakeLock &&other);
+ FakeLock &operator= (const FakeLock &other);
void release();
inline bool isReleased() const { return _semaphore == nullptr; }
diff --git a/engines/alcachofa/graphics.cpp b/engines/alcachofa/graphics.cpp
index 7057d8aaa92..a1f1eddabcb 100644
--- a/engines/alcachofa/graphics.cpp
+++ b/engines/alcachofa/graphics.cpp
@@ -522,6 +522,21 @@ Graphic::Graphic(const Graphic &other)
, _frameI(other._frameI)
, _depthScale(other._depthScale) {}
+Graphic &Graphic::operator= (const Graphic &other) {
+ _ownedAnimation.reset();
+ _animation = other._animation;
+ _topLeft = other._topLeft;
+ _scale = other._scale;
+ _order = other._order;
+ _color = other._color;
+ _isPaused = other._isPaused;
+ _isLooping = other._isLooping;
+ _lastTime = other._lastTime;
+ _frameI = other._frameI;
+ _depthScale = other._depthScale;
+ return *this;
+}
+
void Graphic::loadResources() {
if (_animation != nullptr)
_animation->load();
diff --git a/engines/alcachofa/graphics.h b/engines/alcachofa/graphics.h
index d095a3e880b..9db32224bc7 100644
--- a/engines/alcachofa/graphics.h
+++ b/engines/alcachofa/graphics.h
@@ -259,6 +259,7 @@ public:
Graphic();
Graphic(Common::ReadStream &stream);
Graphic(const Graphic &other); // animation reference is taken, so keep other alive
+ Graphic &operator= (const Graphic &other);
inline Common::Point &topLeft() { return _topLeft; }
inline int8 &order() { return _order; }
diff --git a/engines/alcachofa/objects.h b/engines/alcachofa/objects.h
index ad6672e6ba5..46f3ebb0600 100644
--- a/engines/alcachofa/objects.h
+++ b/engines/alcachofa/objects.h
@@ -351,11 +351,12 @@ public:
const char *typeName() const override;
};
-class Item : public GraphicObject {
+class Item : public GraphicObject { //-V690
public:
static constexpr const char *kClassName = "CObjetoInventario";
Item(Room *room, Common::ReadStream &stream);
Item(const Item &other);
+ // no copy-assign operator as it is non-sensical, the copy ctor is a special case for item-handling
void draw() override;
const char *typeName() const override;
Commit: e22c35f8fb071a59a367cb42839e2d718bc7f3f4
https://github.com/scummvm/scummvm/commit/e22c35f8fb071a59a367cb42839e2d718bc7f3f4
Author: Helco (hermann.noll at hotmail.com)
Date: 2025-09-16T12:04:12+02:00
Commit Message:
ALCACHOFA: Fix one-off warnings. PVS-Studio V558, V1009, V699, V764, V595, V773, V1037, V560, V668
Changed paths:
engines/alcachofa/alcachofa.cpp
engines/alcachofa/common.cpp
engines/alcachofa/graphics-tinygl.cpp
engines/alcachofa/graphics.cpp
engines/alcachofa/graphics.h
engines/alcachofa/rooms.cpp
engines/alcachofa/shape.cpp
engines/alcachofa/shape.h
diff --git a/engines/alcachofa/alcachofa.cpp b/engines/alcachofa/alcachofa.cpp
index 486688eaab0..b1662a37441 100644
--- a/engines/alcachofa/alcachofa.cpp
+++ b/engines/alcachofa/alcachofa.cpp
@@ -61,6 +61,8 @@ AlcachofaEngine::AlcachofaEngine(OSystem *syst, const ADGameDescription *gameDes
}
AlcachofaEngine::~AlcachofaEngine() {
+ // do not delete, this is done by `Engine::~Engine` with `delete _debugger;`
+ _console = nullptr;
}
uint32 AlcachofaEngine::getFeatures() const {
@@ -108,8 +110,9 @@ Common::Error AlcachofaEngine::run() {
_drawQueue->clear();
_camera.shake() = Vector2d();
_player->preUpdate();
- _player->currentRoom()->update();
if (_player->currentRoom() != nullptr)
+ _player->currentRoom()->update();
+ if (_player->currentRoom() != nullptr) // update() might clear currentRoom
_player->currentRoom()->draw();
_player->postUpdate();
if (_debugHandler != nullptr)
diff --git a/engines/alcachofa/common.cpp b/engines/alcachofa/common.cpp
index dc4b8c5a0a7..f59a5d81d18 100644
--- a/engines/alcachofa/common.cpp
+++ b/engines/alcachofa/common.cpp
@@ -167,7 +167,7 @@ String readVarString(ReadStream &stream) {
return Common::String();
char *buffer = new char[length];
- if (buffer == nullptr)
+ if (buffer == nullptr) //-V668
error("Out of memory in readVarString");
if (stream.read(buffer, length) != length)
error("Could not read all %u bytes in readVarString", length);
diff --git a/engines/alcachofa/graphics-tinygl.cpp b/engines/alcachofa/graphics-tinygl.cpp
index 4ce2dd68dc2..90d84ed2200 100644
--- a/engines/alcachofa/graphics-tinygl.cpp
+++ b/engines/alcachofa/graphics-tinygl.cpp
@@ -127,6 +127,7 @@ public:
return;
switch (blendMode) {
case BlendMode::AdditiveAlpha:
+ case BlendMode::Tinted:
tglBlendFunc(TGL_ONE, TGL_ONE_MINUS_SRC_ALPHA);
break;
case BlendMode::Additive:
@@ -138,9 +139,6 @@ public:
case BlendMode::Alpha:
tglBlendFunc(TGL_SRC_ALPHA, TGL_ONE_MINUS_SRC_ALPHA);
break;
- case BlendMode::Tinted:
- tglBlendFunc(TGL_ONE, TGL_ONE_MINUS_SRC_ALPHA);
- break;
default: assert(false && "Invalid blend mode"); break;
}
diff --git a/engines/alcachofa/graphics.cpp b/engines/alcachofa/graphics.cpp
index a1f1eddabcb..14dd5512cf3 100644
--- a/engines/alcachofa/graphics.cpp
+++ b/engines/alcachofa/graphics.cpp
@@ -564,7 +564,8 @@ void Graphic::update() {
curTime %= totalDuration;
else {
pause();
- curTime = _lastTime = totalDuration ? totalDuration - 1 : 0;
+ curTime = totalDuration ? totalDuration - 1 : 0;
+ _lastTime = curTime;
}
}
diff --git a/engines/alcachofa/graphics.h b/engines/alcachofa/graphics.h
index 9db32224bc7..26b8bbd6bdb 100644
--- a/engines/alcachofa/graphics.h
+++ b/engines/alcachofa/graphics.h
@@ -168,7 +168,7 @@ protected:
bool _isLoaded = false;
uint32 _totalDuration = 0;
- int32 _spriteIndexMapping[kMaxSpriteIDs] = { -1 };
+ int32 _spriteIndexMapping[kMaxSpriteIDs] = { 0 };
Common::Array<uint32>
_spriteOffsets, ///< index offset per sprite and animation frame
_spriteBases; ///< base index per sprite
diff --git a/engines/alcachofa/rooms.cpp b/engines/alcachofa/rooms.cpp
index 3764a82664e..ffadfffe641 100644
--- a/engines/alcachofa/rooms.cpp
+++ b/engines/alcachofa/rooms.cpp
@@ -566,7 +566,7 @@ Room *World::getRoomByName(const char *name) const {
ObjectBase *World::getObjectByName(const char *name) const {
ObjectBase *result = nullptr;
- if (result == nullptr && g_engine->player().currentRoom() != nullptr)
+ if (g_engine->player().currentRoom() != nullptr)
result = g_engine->player().currentRoom()->getObjectByName(name);
if (result == nullptr)
result = globalRoom().getObjectByName(name);
diff --git a/engines/alcachofa/shape.cpp b/engines/alcachofa/shape.cpp
index 5db327f47e3..3a2c1fda964 100644
--- a/engines/alcachofa/shape.cpp
+++ b/engines/alcachofa/shape.cpp
@@ -40,12 +40,12 @@ static bool segmentsIntersect(Point a1, Point b1, Point a2, Point b2) {
// rather than using common Math:: code
if (a2.x > b2.x) {
if (a1.x > b1.x)
- return lineIntersects(b1, a1, b2, a2) && lineIntersects(b2, a2, b1, a1);
+ return lineIntersects(b1, a1, b2, a2) && lineIntersects(b2, a2, b1, a1); //-V764
else
- return lineIntersects(a1, b1, b2, a2) && lineIntersects(b2, a2, a1, b1);
+ return lineIntersects(a1, b1, b2, a2) && lineIntersects(b2, a2, a1, b1); //-V764
} else {
if (a1.x > b1.x)
- return lineIntersects(b1, a1, a2, b2) && lineIntersects(a2, b2, b1, a1);
+ return lineIntersects(b1, a1, a2, b2) && lineIntersects(a2, b2, b1, a1); //-V764
else
return lineIntersects(a1, b1, a2, b2) && lineIntersects(a2, b2, a1, b1);
}
diff --git a/engines/alcachofa/shape.h b/engines/alcachofa/shape.h
index 3ac64f41e19..24eda2557fc 100644
--- a/engines/alcachofa/shape.h
+++ b/engines/alcachofa/shape.h
@@ -89,7 +89,7 @@ struct PolygonIterator {
return *this;
}
- inline my_type &operator++(int) {
+ inline my_type operator++(int) {
assert(_index < _shape.polygonCount());
auto tmp = *this;
++*this;
Commit: 6c76adfa4ffe6221ce2987d4ae94b263f8eeb511
https://github.com/scummvm/scummvm/commit/6c76adfa4ffe6221ce2987d4ae94b263f8eeb511
Author: Helco (hermann.noll at hotmail.com)
Date: 2025-09-16T12:04:12+02:00
Commit Message:
ALCACHOFA: Fix potential null-pointer dereferences. PVS-Studio V522
Changed paths:
engines/alcachofa/graphics-opengl-classic.cpp
engines/alcachofa/graphics-tinygl.cpp
engines/alcachofa/ui-objects.cpp
diff --git a/engines/alcachofa/graphics-opengl-classic.cpp b/engines/alcachofa/graphics-opengl-classic.cpp
index 8bf311c4d61..9577e90d6db 100644
--- a/engines/alcachofa/graphics-opengl-classic.cpp
+++ b/engines/alcachofa/graphics-opengl-classic.cpp
@@ -57,7 +57,7 @@ public:
}
auto glTexture = dynamic_cast<OpenGLTexture *>(texture);
assert(glTexture != nullptr);
- GL_CALL(glBindTexture(GL_TEXTURE_2D, glTexture->handle()));
+ GL_CALL(glBindTexture(GL_TEXTURE_2D, glTexture->handle())); //-V522
_currentTexture = glTexture;
}
}
diff --git a/engines/alcachofa/graphics-tinygl.cpp b/engines/alcachofa/graphics-tinygl.cpp
index 90d84ed2200..76990e882a5 100644
--- a/engines/alcachofa/graphics-tinygl.cpp
+++ b/engines/alcachofa/graphics-tinygl.cpp
@@ -117,7 +117,7 @@ public:
}
auto glTexture = dynamic_cast<TinyGLTexture *>(texture);
assert(glTexture != nullptr);
- tglBindTexture(TGL_TEXTURE_2D, glTexture->handle());
+ tglBindTexture(TGL_TEXTURE_2D, glTexture->handle()); //-V522
_currentTexture = glTexture;
}
}
diff --git a/engines/alcachofa/ui-objects.cpp b/engines/alcachofa/ui-objects.cpp
index ca0b73b67f8..534115b1245 100644
--- a/engines/alcachofa/ui-objects.cpp
+++ b/engines/alcachofa/ui-objects.cpp
@@ -248,7 +248,7 @@ SlideButton::SlideButton(Room *room, ReadStream &stream)
void SlideButton::draw() {
auto *optionsMenu = dynamic_cast<OptionsMenu *>(room());
- assert(optionsMenu != nullptr);
+ scumm_assert(optionsMenu != nullptr);
Graphic *activeGraphic;
if (optionsMenu->currentSlideButton() == this && g_engine->input().isMouseLeftDown())
@@ -262,7 +262,7 @@ void SlideButton::draw() {
void SlideButton::update() {
const auto mousePos = g_engine->input().mousePos2D();
auto *optionsMenu = dynamic_cast<OptionsMenu *>(room());
- assert(optionsMenu != nullptr);
+ scumm_assert(optionsMenu != nullptr);
if (optionsMenu->currentSlideButton() == this) {
if (!g_engine->input().isMouseLeftDown()) {
More information about the Scummvm-git-logs
mailing list