[Scummvm-git-logs] scummvm master -> dc7b853ad3e5d02c2b5790c022b4c4ccbb3d9e4f

digitall noreply at scummvm.org
Tue Feb 21 18:24:04 UTC 2023


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

Summary:
dc7b853ad3 HPL1: Fix Last of Memset on Non Trivial Structure GCC Compiler Warnings


Commit: dc7b853ad3e5d02c2b5790c022b4c4ccbb3d9e4f
    https://github.com/scummvm/scummvm/commit/dc7b853ad3e5d02c2b5790c022b4c4ccbb3d9e4f
Author: D G Turner (digitall at scummvm.org)
Date: 2023-02-21T18:23:22Z

Commit Message:
HPL1: Fix Last of Memset on Non Trivial Structure GCC Compiler Warnings

Changed paths:
    engines/hpl1/engine/libraries/newton/physics/dgBody.h
    engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp


diff --git a/engines/hpl1/engine/libraries/newton/physics/dgBody.h b/engines/hpl1/engine/libraries/newton/physics/dgBody.h
index d81e1ffdfda..9a70a05dc2a 100644
--- a/engines/hpl1/engine/libraries/newton/physics/dgBody.h
+++ b/engines/hpl1/engine/libraries/newton/physics/dgBody.h
@@ -74,6 +74,11 @@ class dgBroadPhaseList {
 public:
 	dgBroadPhaseCell *m_cell;
 	void *m_axisArrayNode[3];
+
+	void reset() {
+		m_cell = NULL;
+		for (uint i = 0; i < ARRAYSIZE(m_axisArrayNode); i++) m_axisArrayNode[i] = NULL;
+	}
 };
 
 DG_MSC_VECTOR_ALIGMENT
@@ -254,6 +259,8 @@ private:
 	OnMatrixUpdateCallback m_matrixUpdate;
 	OnApplyExtForceAndTorque m_applyExtForces;
 
+	void reset();
+
 	friend class dgWorld;
 	friend class dgContact;
 	friend class dgCollision;
@@ -294,6 +301,60 @@ private:
 //
 // *****************************************************************************
 
+inline void dgBody::reset() {
+	m_matrix = dgGetZeroMatrix();
+	m_collisionWorldMatrix = dgGetZeroMatrix();
+	m_invWorldInertiaMatrix = dgGetZeroMatrix();
+	m_rotation = dgQuaternion(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+
+	m_veloc = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_omega = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_accel = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_alpha = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_netForce = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_netTorque = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_prevExternalForce = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_prevExternalTorque = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+
+	m_mass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_invMass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_aparentMass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_localCentreOfMass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_globalCentreOfMass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_minAABB = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_maxAABB = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+	m_dampCoef = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+
+	m_index = 0;
+	m_uniqueID = 0;
+	m_bodyGroupId = 0;
+	m_genericLRUMark = 0;
+	m_sleepingCounter = 0;
+	m_dynamicsLru = 0;
+	m_isInDerstruionArrayLRU = 0;
+
+	m_freeze = 0;
+	m_sleeping = 0;
+	m_autoSleep = 0;
+	m_isInWorld = 0;
+	m_equilibrium = 0;
+	m_continueCollisionMode = 0;
+	m_spawnnedFromCallback = 0;
+	m_collideWithLinkedBodies = 0;
+	m_solverInContinueCollision = 0;
+	m_inCallback = 0;
+
+	m_userData = NULL;
+	m_world = NULL;
+	m_collision = NULL;
+	m_collisionCell.reset();
+	m_masterNode = NULL;
+
+	m_destructor = NULL;
+	m_matrixUpdate = NULL;
+	m_applyExtForces = NULL;
+}
+
 inline void dgBody::SetAutoSleep(bool state) {
 	m_autoSleep = dgUnsigned32(state);
 	if (m_autoSleep == 0) {
diff --git a/engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp b/engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp
index 5cb3610ff56..c45250b2a61 100644
--- a/engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp
+++ b/engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp
@@ -443,7 +443,7 @@ dgBody *dgWorld::CreateBody(dgCollision *const collision,
 	NEWTON_ASSERT((sizeof(dgBody) & 0xf) == 0);
 	NEWTON_ASSERT((dgUnsigned64(body) & 0xf) == 0);
 
-	memset(body, 0, sizeof(dgBody));
+	body->reset();
 
 	//  m_bodiesCount ++;
 	m_bodiesUniqueID++;




More information about the Scummvm-git-logs mailing list