[Scummvm-git-logs] scummvm master -> 271c7746f2ef7edf45fdbd95a207f1d58674dbe6

aquadran noreply at scummvm.org
Thu Sep 4 19:49:51 UTC 2025


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
271c7746f2 WINTERMUTE: Small sync with original code


Commit: 271c7746f2ef7edf45fdbd95a207f1d58674dbe6
    https://github.com/scummvm/scummvm/commit/271c7746f2ef7edf45fdbd95a207f1d58674dbe6
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-09-04T21:49:46+02:00

Commit Message:
WINTERMUTE: Small sync with original code

Changed paths:
    engines/wintermute/ad/ad_object.cpp
    engines/wintermute/ad/ad_scene_geometry.cpp
    engines/wintermute/base/gfx/xactive_animation.cpp
    engines/wintermute/base/gfx/xframe_node.cpp
    engines/wintermute/base/particles/part_emitter.cpp
    engines/wintermute/base/particles/part_particle.cpp
    engines/wintermute/base/scriptables/script_ext_math.cpp
    engines/wintermute/base/scriptables/script_value.cpp


diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp
index a7fbc3f5ec6..72a46138df3 100644
--- a/engines/wintermute/ad/ad_object.cpp
+++ b/engines/wintermute/ad/ad_object.cpp
@@ -160,8 +160,7 @@ bool AdObject::playAnim(const char *filename) {
 	bool res = _animSprite->loadFile(filename);
 	if (DID_FAIL(res)) {
 		_game->LOG(res, "AdObject::PlayAnim: error loading temp sprite (object:\"%s\" sprite:\"%s\")", _name, filename);
-		delete _animSprite;
-		_animSprite = nullptr;
+		SAFE_DELETE(_animSprite);
 		return res;
 	}
 	_state = STATE_PLAYING_ANIM;
diff --git a/engines/wintermute/ad/ad_scene_geometry.cpp b/engines/wintermute/ad/ad_scene_geometry.cpp
index c4a9d5bafcf..f05ebd5e72f 100644
--- a/engines/wintermute/ad/ad_scene_geometry.cpp
+++ b/engines/wintermute/ad/ad_scene_geometry.cpp
@@ -1271,11 +1271,7 @@ bool AdSceneGeometry::persist(BasePersistenceManager *persistMgr) {
 				light->persist(persistMgr);
 				delete light;
 			}
-
-			if (name) {
-				delete[] name;
-				name = nullptr;
-			}
+			SAFE_DELETE_ARRAY(name);
 		}
 	}
 	createLights();
@@ -1303,11 +1299,7 @@ bool AdSceneGeometry::persist(BasePersistenceManager *persistMgr) {
 				block->persist(persistMgr);
 				delete block;
 			}
-
-			if (name) {
-				delete[] name;
-				name = nullptr;
-			}
+			SAFE_DELETE_ARRAY(name);
 		}
 	}
 
@@ -1334,11 +1326,7 @@ bool AdSceneGeometry::persist(BasePersistenceManager *persistMgr) {
 				plane->persist(persistMgr);
 				delete plane;
 			}
-
-			if (name) {
-				delete[] name;
-				name = nullptr;
-			}
+			SAFE_DELETE_ARRAY(name);
 		}
 	}
 
@@ -1365,11 +1353,7 @@ bool AdSceneGeometry::persist(BasePersistenceManager *persistMgr) {
 				generic->persist(persistMgr);
 				delete generic;
 			}
-
-			if (name) {
-				delete[] name;
-				name = nullptr;
-			}
+			SAFE_DELETE_ARRAY(name);
 		}
 	}
 
diff --git a/engines/wintermute/base/gfx/xactive_animation.cpp b/engines/wintermute/base/gfx/xactive_animation.cpp
index 3f6f3d6f439..5f5589a0bef 100644
--- a/engines/wintermute/base/gfx/xactive_animation.cpp
+++ b/engines/wintermute/base/gfx/xactive_animation.cpp
@@ -100,6 +100,7 @@ bool ActiveAnimation::update(int slot, bool prevFrameOnly, float lerpValue, bool
 	}
 	if (_finished) {
 		localTime = _animation->getTotalTime();
+		// prevent corner case
 		if (localTime != 0)
 			localTime--;
 	}
@@ -156,7 +157,7 @@ bool ActiveAnimation::persist(BasePersistenceManager *persistMgr) {
 			_animation = nullptr;
 		}
 
-		delete[] animName;
+		SAFE_DELETE_ARRAY(animName);
 	}
 
 	return true;
diff --git a/engines/wintermute/base/gfx/xframe_node.cpp b/engines/wintermute/base/gfx/xframe_node.cpp
index b4cc3adfbaf..b61223e013c 100644
--- a/engines/wintermute/base/gfx/xframe_node.cpp
+++ b/engines/wintermute/base/gfx/xframe_node.cpp
@@ -160,7 +160,7 @@ bool FrameNode::loadFromXData(const Common::String &filename, XModel *model, XFi
 		if (res)
 			_frames.add(childFrame);
 		else
-			delete childFrame;
+			SAFE_DELETE(childFrame);
 		return res;
 	} else if (objectType == kXClassAnimTicksPerSecond) {
 		if (!xobj->getXAnimTicksPerSecondObject()) {
diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp
index 26fc544246a..6e9e717d510 100644
--- a/engines/wintermute/base/particles/part_emitter.cpp
+++ b/engines/wintermute/base/particles/part_emitter.cpp
@@ -1137,8 +1137,7 @@ bool PartEmitter::scSetProperty(const char *name, ScValue *value) {
 	// EmitEvent
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "EmitEvent") == 0) {
-		delete[] _emitEvent;
-		_emitEvent = nullptr;
+		SAFE_DELETE_ARRAY(_emitEvent);
 		if (!value->isNULL()) {
 			BaseUtils::setString(&_emitEvent, value->getString());
 		}
diff --git a/engines/wintermute/base/particles/part_particle.cpp b/engines/wintermute/base/particles/part_particle.cpp
index f9cb947da5b..8e2e767cb90 100644
--- a/engines/wintermute/base/particles/part_particle.cpp
+++ b/engines/wintermute/base/particles/part_particle.cpp
@@ -260,8 +260,7 @@ bool PartParticle::persist(BasePersistenceManager *persistMgr) {
 		SystemClassRegistry::getInstance()->_disabled = true;
 		setSprite(filename);
 		SystemClassRegistry::getInstance()->_disabled = false;
-		delete[] filename;
-		filename = nullptr;
+		SAFE_DELETE_ARRAY(filename);
 	}
 
 	// initialise to default
diff --git a/engines/wintermute/base/scriptables/script_ext_math.cpp b/engines/wintermute/base/scriptables/script_ext_math.cpp
index afbed34bdd5..a153a86ab56 100644
--- a/engines/wintermute/base/scriptables/script_ext_math.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_math.cpp
@@ -119,7 +119,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "Cos") == 0) {
 		stack->correctParams(1);
-		stack->pushFloat(cos(Math::deg2rad<double>(stack->pop()->getFloat())));
+		stack->pushFloat(cos(degreeToRadian(stack->pop()->getFloat())));
 		return STATUS_OK;
 	}
 
@@ -128,7 +128,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "Cosh") == 0) {
 		stack->correctParams(1);
-		stack->pushFloat(cosh(Math::deg2rad<double>(stack->pop()->getFloat())));
+		stack->pushFloat(cosh(degreeToRadian(stack->pop()->getFloat())));
 		return STATUS_OK;
 	}
 
@@ -185,7 +185,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "Sin") == 0) {
 		stack->correctParams(1);
-		stack->pushFloat(sin(Math::deg2rad<double>(stack->pop()->getFloat())));
+		stack->pushFloat(sin(degreeToRadian(stack->pop()->getFloat())));
 		return STATUS_OK;
 	}
 
@@ -194,7 +194,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "Sinh") == 0) {
 		stack->correctParams(1);
-		stack->pushFloat(sinh(Math::deg2rad<double>(stack->pop()->getFloat())));
+		stack->pushFloat(sinh(degreeToRadian(stack->pop()->getFloat())));
 		return STATUS_OK;
 	}
 
@@ -203,7 +203,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "Tan") == 0) {
 		stack->correctParams(1);
-		stack->pushFloat(tan(Math::deg2rad<double>(stack->pop()->getFloat())));
+		stack->pushFloat(tan(degreeToRadian(stack->pop()->getFloat())));
 		return STATUS_OK;
 	}
 
@@ -212,7 +212,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "Tanh") == 0) {
 		stack->correctParams(1);
-		stack->pushFloat(tanh(Math::deg2rad<double>(stack->pop()->getFloat())));
+		stack->pushFloat(tanh(degreeToRadian(stack->pop()->getFloat())));
 		return STATUS_OK;
 	}
 
@@ -230,7 +230,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "DegToRad") == 0) {
 		stack->correctParams(1);
-		stack->pushFloat(Math::deg2rad<double>(stack->pop()->getFloat()));
+		stack->pushFloat(degreeToRadian(stack->pop()->getFloat()));
 		return STATUS_OK;
 	}
 
@@ -239,7 +239,7 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 	//////////////////////////////////////////////////////////////////////////
 	else if (strcmp(name, "RadToDeg") == 0) {
 		stack->correctParams(1);
-		stack->pushFloat(Math::rad2deg<double>(stack->pop()->getFloat()));
+		stack->pushFloat(radianToDegree(stack->pop()->getFloat()));
 		return STATUS_OK;
 	} else {
 		return STATUS_FAILED;
@@ -270,6 +270,15 @@ ScValue *SXMath::scGetProperty(const Common::String &name) {
 	}
 }
 
+//////////////////////////////////////////////////////////////////////////
+double SXMath::degreeToRadian(double value) {
+	return value * (M_PI / 180.0f);
+}
+
+//////////////////////////////////////////////////////////////////////////
+double SXMath::radianToDegree(double value) {
+	return value * (180.0f / M_PI);
+}
 
 //////////////////////////////////////////////////////////////////////////
 bool SXMath::persist(BasePersistenceManager *persistMgr) {
diff --git a/engines/wintermute/base/scriptables/script_value.cpp b/engines/wintermute/base/scriptables/script_value.cpp
index 7fe07d5f78e..d45f33b5a0e 100644
--- a/engines/wintermute/base/scriptables/script_value.cpp
+++ b/engines/wintermute/base/scriptables/script_value.cpp
@@ -447,9 +447,9 @@ void ScValue::setString(const Common::String &val) {
 //////////////////////////////////////////////////////////////////////////
 void ScValue::setStringVal(const char *val) {
 	delete[] _valString;
-	_valString = nullptr;
 
 	if (val == nullptr) {
+		_valString = nullptr;
 		return;
 	}
 




More information about the Scummvm-git-logs mailing list