[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