[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