[Scummvm-git-logs] scummvm master -> 171cdc2afbbe86a1e7fd658e49adb70378d3b93b
mduggan
noreply at scummvm.org
Sat Mar 11 10:38:27 UTC 2023
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:
fcf23fd6ca TETRAEDGE: Avoid potential null dereference
5a624a33ba TETRAEDGE: Enforce some layout items are not null
171cdc2afb TETRAEDGE: Improve initialization pattern for XML parsers
Commit: fcf23fd6cab996910c7bbe2391dd169f1c940aac
https://github.com/scummvm/scummvm/commit/fcf23fd6cab996910c7bbe2391dd169f1c940aac
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-11T19:38:19+09:00
Commit Message:
TETRAEDGE: Avoid potential null dereference
Identified by Coverity.
Changed paths:
engines/tetraedge/game/game.cpp
diff --git a/engines/tetraedge/game/game.cpp b/engines/tetraedge/game/game.cpp
index 4dfb947e14f..584afb01173 100644
--- a/engines/tetraedge/game/game.cpp
+++ b/engines/tetraedge/game/game.cpp
@@ -907,11 +907,13 @@ bool Game::onCharacterAnimationFinished(const Common::String &charName) {
if (g_engine->gameType() == TetraedgeEngine::kSyberia2) {
Character *character = scene().character(charName);
- const Common::String curAnimName = character->curAnimName();
- if (character && (curAnimName == character->walkAnim(Character::WalkPart_EndD)
- || curAnimName == character->walkAnim(Character::WalkPart_EndG))) {
- character->updatePosition(1.0);
- character->endMove();
+ if (character) {
+ const Common::String curAnimName = character->curAnimName();
+ if (character && (curAnimName == character->walkAnim(Character::WalkPart_EndD)
+ || curAnimName == character->walkAnim(Character::WalkPart_EndG))) {
+ character->updatePosition(1.0);
+ character->endMove();
+ }
}
}
Commit: 5a624a33ba5668b2528226ca9b73fc4906ff2be9
https://github.com/scummvm/scummvm/commit/5a624a33ba5668b2528226ca9b73fc4906ff2be9
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-11T19:38:20+09:00
Commit Message:
TETRAEDGE: Enforce some layout items are not null
As identified by Coverity.
Changed paths:
engines/tetraedge/game/game.cpp
diff --git a/engines/tetraedge/game/game.cpp b/engines/tetraedge/game/game.cpp
index 584afb01173..110d7884bd1 100644
--- a/engines/tetraedge/game/game.cpp
+++ b/engines/tetraedge/game/game.cpp
@@ -593,17 +593,17 @@ bool Game::initWarp(const Common::String &zone, const Common::String &scene, boo
_inventoryMenu.load();
_inGameGui.load("InGame.lua");
- TeButtonLayout *skipbtn = _inGameGui.buttonLayout("skipVideoButton");
+ TeButtonLayout *skipbtn = _inGameGui.buttonLayoutChecked("skipVideoButton");
skipbtn->setVisible(false);
skipbtn->onMouseClickValidated().remove(this, &Game::onSkipVideoButtonValidated);
skipbtn->onMouseClickValidated().add(this, &Game::onSkipVideoButtonValidated);
- TeButtonLayout *vidbgbtn = _inGameGui.buttonLayout("videoBackgroundButton");
+ TeButtonLayout *vidbgbtn = _inGameGui.buttonLayoutChecked("videoBackgroundButton");
vidbgbtn->setVisible(false);
vidbgbtn->onMouseClickValidated().remove(this, &Game::onLockVideoButtonValidated);
vidbgbtn->onMouseClickValidated().add(this, &Game::onLockVideoButtonValidated);
- TeSpriteLayout *video = _inGameGui.spriteLayout("video");
+ TeSpriteLayout *video = _inGameGui.spriteLayoutChecked("video");
video->setVisible(false);
video->_tiledSurfacePtr->_frameAnim.onStop().remove(this, &Game::onVideoFinished);
video->_tiledSurfacePtr->_frameAnim.onStop().add(this, &Game::onVideoFinished);
Commit: 171cdc2afbbe86a1e7fd658e49adb70378d3b93b
https://github.com/scummvm/scummvm/commit/171cdc2afbbe86a1e7fd658e49adb70378d3b93b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2023-03-11T19:38:20+09:00
Commit Message:
TETRAEDGE: Improve initialization pattern for XML parsers
Also fixes some coverity warnings as a bonus.
Changed paths:
engines/tetraedge/game/in_game_scene.cpp
engines/tetraedge/game/in_game_scene_xml_parser.h
engines/tetraedge/game/object3d.cpp
engines/tetraedge/game/object_settings_xml_parser.cpp
engines/tetraedge/game/object_settings_xml_parser.h
engines/tetraedge/game/scene_lights_xml_parser.cpp
engines/tetraedge/game/scene_lights_xml_parser.h
engines/tetraedge/te/te_text_layout_xml_parser.h
diff --git a/engines/tetraedge/game/in_game_scene.cpp b/engines/tetraedge/game/in_game_scene.cpp
index d2c9695e14c..8a2441c74e8 100644
--- a/engines/tetraedge/game/in_game_scene.cpp
+++ b/engines/tetraedge/game/in_game_scene.cpp
@@ -803,8 +803,7 @@ bool InGameScene::loadXml(const Common::String &zone, const Common::String &scen
Common::Path xmlpath = _sceneFileNameBase(zone, scene).joinInPlace("Scene")
.appendInPlace(scene).appendInPlace(".xml");
Common::FSNode node = g_engine->getCore()->findFile(xmlpath);
- InGameSceneXmlParser parser;
- parser._scene = this;
+ InGameSceneXmlParser parser(this);
parser.setAllowText();
Common::String fixedbuf;
@@ -945,9 +944,7 @@ bool InGameScene::loadFreeMoveZone(const Common::String &name, TeVector2f32 &gri
}
bool InGameScene::loadLights(const Common::FSNode &node) {
- SceneLightsXmlParser parser;
-
- parser.setLightArray(&_lights);
+ SceneLightsXmlParser parser(&_lights);
if (!parser.loadFile(node))
error("InGameScene::loadLights: Can't load %s", node.getPath().c_str());
diff --git a/engines/tetraedge/game/in_game_scene_xml_parser.h b/engines/tetraedge/game/in_game_scene_xml_parser.h
index 9ccf4ba189e..01510c1001d 100644
--- a/engines/tetraedge/game/in_game_scene_xml_parser.h
+++ b/engines/tetraedge/game/in_game_scene_xml_parser.h
@@ -33,6 +33,9 @@ namespace Tetraedge {
*/
class InGameSceneXmlParser : public TeXmlParser {
public:
+ InGameSceneXmlParser(InGameScene *scene)
+ : _scene(scene), _textNodeType(TextNodeNone) {}
+
// NOTE: This doesn't handle snowCustom tag which was
// added in original but commented out in every place.
CUSTOM_XML_PARSER(InGameSceneXmlParser) {
diff --git a/engines/tetraedge/game/object3d.cpp b/engines/tetraedge/game/object3d.cpp
index 44f29c717a4..57f0000c263 100644
--- a/engines/tetraedge/game/object3d.cpp
+++ b/engines/tetraedge/game/object3d.cpp
@@ -94,13 +94,12 @@ void Object3D::setCurMovePos(const TeVector3f32 &vec) {
/*static*/
bool Object3D::loadSettings(const Common::String &path) {
- ObjectSettingsXmlParser parser;
- parser.setAllowText();
-
if (_objectSettings)
delete _objectSettings;
_objectSettings = new Common::HashMap<Common::String, ObjectSettings>();
- parser.setObjectSettings(_objectSettings);
+
+ ObjectSettingsXmlParser parser(_objectSettings);
+ parser.setAllowText();
if (!parser.loadFile(path))
error("Object3D::loadSettings: Can't load %s", path.c_str());
diff --git a/engines/tetraedge/game/object_settings_xml_parser.cpp b/engines/tetraedge/game/object_settings_xml_parser.cpp
index df1f6455faa..a542d3e78b5 100644
--- a/engines/tetraedge/game/object_settings_xml_parser.cpp
+++ b/engines/tetraedge/game/object_settings_xml_parser.cpp
@@ -83,6 +83,8 @@ bool ObjectSettingsXmlParser::textCallback(const Common::String &val) {
default:
error("should only see text for model file name or scale");
}
+
+ _textTagType = TagNone;
return true;
}
diff --git a/engines/tetraedge/game/object_settings_xml_parser.h b/engines/tetraedge/game/object_settings_xml_parser.h
index 52b87d7231b..c23ee94aa42 100644
--- a/engines/tetraedge/game/object_settings_xml_parser.h
+++ b/engines/tetraedge/game/object_settings_xml_parser.h
@@ -30,9 +30,8 @@ namespace Tetraedge {
class ObjectSettingsXmlParser : public Common::XMLParser {
public:
- void setObjectSettings(Common::HashMap<Common::String, Object3D::ObjectSettings> *settings) {
- _objectSettings = settings;
- }
+ ObjectSettingsXmlParser(Common::HashMap<Common::String, Object3D::ObjectSettings> *settings) :
+ Common::XMLParser(), _textTagType(TagNone), _objectSettings(settings) {}
void finalize();
@@ -64,6 +63,7 @@ private:
bool textCallback(const Common::String &val) override;
enum TextTagType {
+ TagNone,
TagModelFileName,
TagDefaultScale,
TagOriginOffset
diff --git a/engines/tetraedge/game/scene_lights_xml_parser.cpp b/engines/tetraedge/game/scene_lights_xml_parser.cpp
index 48ff45c6f85..9702631f0a8 100644
--- a/engines/tetraedge/game/scene_lights_xml_parser.cpp
+++ b/engines/tetraedge/game/scene_lights_xml_parser.cpp
@@ -25,7 +25,7 @@
namespace Tetraedge {
bool SceneLightsXmlParser::parserCallback_Global(ParserNode *node) {
- _parent = Parent_Global;
+ _parent = ParentGlobal;
return true;
}
@@ -35,7 +35,7 @@ bool SceneLightsXmlParser::parserCallback_Ambient(ParserNode *node) {
if (!parseCol(node, col))
return false;
- if (_parent == Parent_Global) {
+ if (_parent == ParentGlobal) {
TeLight::setGlobalAmbient(col);
} else {
_lights->back()->setAmbient(col);
@@ -49,7 +49,7 @@ bool SceneLightsXmlParser::parserCallback_Lights(ParserNode *node) {
}
bool SceneLightsXmlParser::parserCallback_Light(ParserNode *node) {
- _parent = Parent_Light;
+ _parent = ParentLight;
_lights->push_back(Common::SharedPtr<TeLight>(TeLight::makeInstance()));
TeLightType ltype = TeLightType::LightTypeDirectional;
if (node->values["Type"] == "Spot")
@@ -127,7 +127,7 @@ bool SceneLightsXmlParser::parserCallback_DisplaySize(ParserNode *node) {
}
bool SceneLightsXmlParser::parserCallback_Shadow(ParserNode *node) {
- _parent = Parent_Shadow;
+ _parent = ParentShadow;
return true;
}
diff --git a/engines/tetraedge/game/scene_lights_xml_parser.h b/engines/tetraedge/game/scene_lights_xml_parser.h
index f66fb5b7c08..a184e9f090f 100644
--- a/engines/tetraedge/game/scene_lights_xml_parser.h
+++ b/engines/tetraedge/game/scene_lights_xml_parser.h
@@ -31,9 +31,10 @@ namespace Tetraedge {
class SceneLightsXmlParser : public TeXmlParser {
public:
- void setLightArray(Common::Array<Common::SharedPtr<TeLight>> *lights) {
- _lights = lights;
- }
+ SceneLightsXmlParser(Common::Array<Common::SharedPtr<TeLight>> *lights) :
+ _lights(lights), _shadowLightNo(-1), _shadowFarPlane(0),
+ _shadowNearPlane(0), _shadowFov(0), _parent(ParentNone) {}
+
TeColor getShadowColor() { return _shadowColor; }
int getShadowLightNo() { return _shadowLightNo; }
float getShadowFarPlane() { return _shadowFarPlane; }
@@ -118,9 +119,10 @@ private:
Common::Array<Common::SharedPtr<TeLight>> *_lights;
enum ParentNodeType {
- Parent_Global,
- Parent_Light,
- Parent_Shadow
+ ParentNone,
+ ParentGlobal,
+ ParentLight,
+ ParentShadow
};
TeColor _shadowColor;
diff --git a/engines/tetraedge/te/te_text_layout_xml_parser.h b/engines/tetraedge/te/te_text_layout_xml_parser.h
index 0599b9337c6..dcd14085be1 100644
--- a/engines/tetraedge/te/te_text_layout_xml_parser.h
+++ b/engines/tetraedge/te/te_text_layout_xml_parser.h
@@ -32,7 +32,8 @@ namespace Tetraedge {
class TeTextLayoutXmlParser : public TeXmlParser {
public:
- // Parser
+ TeTextLayoutXmlParser() : TeXmlParser(), _fontSize(0) {}
+
CUSTOM_XML_PARSER(TeTextLayoutXmlParser) {
XML_KEY(document)
XML_KEY(section)
More information about the Scummvm-git-logs
mailing list