[Scummvm-git-logs] scummvm master -> 4ae94fbd0a58edcfffbf2de3eb5e4796de17652a

digitall 547637+digitall at users.noreply.github.com
Tue Mar 23 16:39:40 UTC 2021


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:
4ae94fbd0a AGS: Fix Memset on Non-Trivial Structure GCC Compiler Warnings


Commit: 4ae94fbd0a58edcfffbf2de3eb5e4796de17652a
    https://github.com/scummvm/scummvm/commit/4ae94fbd0a58edcfffbf2de3eb5e4796de17652a
Author: D G Turner (digitall at scummvm.org)
Date: 2021-03-23T16:39:20Z

Commit Message:
AGS: Fix Memset on Non-Trivial Structure GCC Compiler Warnings

Changed paths:
    engines/ags/plugins/ags_snow_rain/weather.cpp
    engines/ags/plugins/ags_snow_rain/weather.h
    engines/ags/shared/ac/gamesetupstruct.cpp
    engines/ags/shared/ac/mousecursor.cpp
    engines/ags/shared/ac/mousecursor.h
    engines/ags/shared/game/interactions.cpp
    engines/ags/shared/game/interactions.h


diff --git a/engines/ags/plugins/ags_snow_rain/weather.cpp b/engines/ags/plugins/ags_snow_rain/weather.cpp
index 69bb4544ca..21260338ac 100644
--- a/engines/ags/plugins/ags_snow_rain/weather.cpp
+++ b/engines/ags/plugins/ags_snow_rain/weather.cpp
@@ -236,9 +236,8 @@ void Weather::Initialize() {
 }
 
 void Weather::InitializeParticles() {
-	memset(_mParticles, 0, sizeof(Drop) * 2000);
-	int i;
-	for (i = 0; i < 2000; i++) {
+	for (uint i = 0; i < ARRAYSIZE(_mParticles); i++) {
+		_mParticles[i].clear();
 		_mParticles[i].kind_id = ::AGS::g_vm->getRandomNumber(0x7fffffff) % 5;
 		_mParticles[i].y = ::AGS::g_vm->getRandomNumber(0x7fffffff) % (_screenHeight * 2) - _screenHeight;
 		_mParticles[i].x = ::AGS::g_vm->getRandomNumber(0x7fffffff) % _screenWidth;
diff --git a/engines/ags/plugins/ags_snow_rain/weather.h b/engines/ags/plugins/ags_snow_rain/weather.h
index dc229bf531..42b0a2475b 100644
--- a/engines/ags/plugins/ags_snow_rain/weather.h
+++ b/engines/ags/plugins/ags_snow_rain/weather.h
@@ -49,6 +49,18 @@ struct Drop {
 	int drift = 0;
 	float drift_speed = 0;
 	float drift_offset = 0;
+
+	void clear() {
+		x = 0;
+		y = 0;
+		alpha = 0;
+		speed = 0;
+		max_y = 0;
+		kind_id = 0;
+		drift = 0;
+		drift_speed = 0;
+		drift_offset = 0;
+	}
 };
 
 class Weather {
diff --git a/engines/ags/shared/ac/gamesetupstruct.cpp b/engines/ags/shared/ac/gamesetupstruct.cpp
index 37803854c5..d15be84a19 100644
--- a/engines/ags/shared/ac/gamesetupstruct.cpp
+++ b/engines/ags/shared/ac/gamesetupstruct.cpp
@@ -40,7 +40,9 @@ GameSetupStruct::GameSetupStruct()
 	, roomNames(nullptr)
 	, scoreClipID(0) {
 	memset(invinfo, 0, sizeof(invinfo));
-	memset(mcurs, 0, sizeof(mcurs));
+	for (uint i = 0; i < ARRAYSIZE(mcurs); i++) {
+		mcurs[i].clear();
+	}
 	memset(lipSyncFrameLetters, 0, sizeof(lipSyncFrameLetters));
 	memset(guid, 0, sizeof(guid));
 	memset(saveGameFileExtension, 0, sizeof(saveGameFileExtension));
diff --git a/engines/ags/shared/ac/mousecursor.cpp b/engines/ags/shared/ac/mousecursor.cpp
index c75dde9567..dc4c4e460d 100644
--- a/engines/ags/shared/ac/mousecursor.cpp
+++ b/engines/ags/shared/ac/mousecursor.cpp
@@ -37,6 +37,15 @@ MouseCursor::MouseCursor() {
 	view = -1;
 }
 
+void MouseCursor::clear() {
+	pic = 0;
+	hotx = 0;
+	hoty = 0;
+	view = 0;
+	for (uint i = 0; i < ARRAYSIZE(name); i++) name[i] = 0;
+	flags = 0;
+}
+
 void MouseCursor::ReadFromFile(Stream *in) {
 	pic = in->ReadInt32();
 	hotx = in->ReadInt16();
diff --git a/engines/ags/shared/ac/mousecursor.h b/engines/ags/shared/ac/mousecursor.h
index f34fc27247..6c93974670 100644
--- a/engines/ags/shared/ac/mousecursor.h
+++ b/engines/ags/shared/ac/mousecursor.h
@@ -47,6 +47,7 @@ struct MouseCursor {
 	char  flags;
 	MouseCursor();
 
+	void clear();
 	void ReadFromFile(Shared::Stream *in);
 	void WriteToFile(Shared::Stream *out);
 	void ReadFromSavegame(Shared::Stream *in);
diff --git a/engines/ags/shared/game/interactions.cpp b/engines/ags/shared/game/interactions.cpp
index 7ed8723387..70d1f47e76 100644
--- a/engines/ags/shared/game/interactions.cpp
+++ b/engines/ags/shared/game/interactions.cpp
@@ -38,6 +38,12 @@ InteractionValue::InteractionValue() {
 	Extra = 0;
 }
 
+void InteractionValue::clear() {
+	Type = kInterValInvalid; // FIXME: can this be kInterValLiteralInt?
+	Value = 0;
+	Extra = 0;
+}
+
 void InteractionValue::Read(Stream *in) {
 	Type = (InterValType)in->ReadInt8();
 	Value = in->ReadInt32();
@@ -70,7 +76,9 @@ void InteractionCommand::Assign(const InteractionCommand &ic, InteractionCommand
 
 void InteractionCommand::Reset() {
 	Type = 0;
-	memset(Data, 0, sizeof(Data));
+	for (uint i = 0; i < ARRAYSIZE(Data); i++) {
+		Data[i].clear();
+	}
 	Children.reset();
 	Parent = nullptr;
 }
diff --git a/engines/ags/shared/game/interactions.h b/engines/ags/shared/game/interactions.h
index caa4893565..2d29289c70 100644
--- a/engines/ags/shared/game/interactions.h
+++ b/engines/ags/shared/game/interactions.h
@@ -64,6 +64,7 @@ namespace AGS {
 namespace Shared {
 
 enum InterValType {
+	kInterValInvalid = 0,
 	kInterValLiteralInt = 1,
 	kInterValVariable = 2,
 	kInterValBoolean = 3,
@@ -81,6 +82,7 @@ struct InteractionValue {
 	int          Extra;
 
 	InteractionValue();
+	void clear();
 
 	void Read(Stream *in);
 	void Write(Stream *out) const;




More information about the Scummvm-git-logs mailing list