diff options
author | Torbjörn Andersson | 2019-01-05 20:12:42 +0100 |
---|---|---|
committer | Filippos Karapetis | 2019-07-14 14:58:19 +0300 |
commit | 4eef7a42e3f45a18a57674898f5fb5409f6daf5d (patch) | |
tree | 298ef17606a4aa0747b32c49bd6a28c7e7b9a32c | |
parent | b5b136b1770dd3ed4b750b9df9c10881dded1aba (diff) | |
download | scummvm-rg350-4eef7a42e3f45a18a57674898f5fb5409f6daf5d.tar.gz scummvm-rg350-4eef7a42e3f45a18a57674898f5fb5409f6daf5d.tar.bz2 scummvm-rg350-4eef7a42e3f45a18a57674898f5fb5409f6daf5d.zip |
FULLPIPE: Silence GCC memset() warnings
Recent GCC versions complain if you memset() a class or struct that
contain non-POD data types. Get around that by either initializing
the object when created, or by adding a reset() method.
-rw-r--r-- | engines/fullpipe/anihandler.cpp | 2 | ||||
-rw-r--r-- | engines/fullpipe/anihandler.h | 25 | ||||
-rw-r--r-- | engines/fullpipe/motion.cpp | 4 | ||||
-rw-r--r-- | engines/fullpipe/scenes/scene04.cpp | 2 |
4 files changed, 28 insertions, 5 deletions
diff --git a/engines/fullpipe/anihandler.cpp b/engines/fullpipe/anihandler.cpp index 4ae870bb93..05cde7567d 100644 --- a/engines/fullpipe/anihandler.cpp +++ b/engines/fullpipe/anihandler.cpp @@ -528,7 +528,7 @@ int AniHandler::seekWay(int idx, int st1idx, int st2idx, bool flip, bool flop) { debugC(2, kDebugPathfinding, "AniHandler::seekWay(%d, %d, %d, %d, %d)", idx, st1idx, st2idx, flip, flop); if (st1idx == st2idx) { - memset(&item.subItems[subIdx], 0, sizeof(item.subItems[subIdx])); + item.subItems[subIdx].reset(); return 0; } diff --git a/engines/fullpipe/anihandler.h b/engines/fullpipe/anihandler.h index f73d755aa9..ed4e382869 100644 --- a/engines/fullpipe/anihandler.h +++ b/engines/fullpipe/anihandler.h @@ -38,6 +38,15 @@ struct MGMSubItem { int y; MGMSubItem(); + + void reset() { + movement = nullptr; + staticsIndex = 0; + field_8 = 0; + field_C = 0; + x = 0; + y = 0; + } }; struct MGMItem { @@ -63,7 +72,21 @@ struct MakeQueueStruct { int y2; int flags; - MakeQueueStruct() { memset(this, 0, sizeof(MakeQueueStruct)); } + MakeQueueStruct() { reset(); } + + void reset() { + ani = nullptr; + staticsId1 = 0; + staticsId2 = 0; + movementId = 0; + field_10 = 0; + x1 = 0; + y1 = 0; + field_1C = 0; + x2 = 0; + y2 = 0; + flags = 0; + } }; class AniHandler : public CObject { diff --git a/engines/fullpipe/motion.cpp b/engines/fullpipe/motion.cpp index d907c3d65c..c667ac2aa5 100644 --- a/engines/fullpipe/motion.cpp +++ b/engines/fullpipe/motion.cpp @@ -1230,7 +1230,7 @@ MessageQueue *MovGraph::makeWholeQueue(StaticANIObject *ani, MovArr *movarr, int MakeQueueStruct mkQueue; - memset(&mkQueue, 0, sizeof(mkQueue)); + mkQueue.reset(); mkQueue.ani = ani; mkQueue.staticsId2 = id2; mkQueue.staticsId1 = id1; @@ -1996,7 +1996,7 @@ MessageQueue *MctlGraph::makeWholeQueue(MctlMQ &mctlMQ) { } else { MakeQueueStruct mkQueue; - memset(&mkQueue, 0, sizeof(mkQueue)); + mkQueue.reset(); mkQueue.ani = _items2[mctlMQ.index]._obj; mkQueue.staticsId2 = mg2i->_mov->_staticsObj2->_staticsId; diff --git a/engines/fullpipe/scenes/scene04.cpp b/engines/fullpipe/scenes/scene04.cpp index 45ada3ea6f..59adf37c66 100644 --- a/engines/fullpipe/scenes/scene04.cpp +++ b/engines/fullpipe/scenes/scene04.cpp @@ -645,7 +645,7 @@ MessageQueue *sceneHandler04_kozFly5(StaticANIObject *ani, double phase) { MessageQueue *mq1 = aniHandler.makeRunQueue(&mkQueue); - memset(&mkQueue, 0, sizeof(mkQueue)); + mkQueue.reset(); mkQueue.ani = ani; mkQueue.staticsId1 = ST_KZW_JUMPOUT; mkQueue.staticsId2 = ST_KZW_SIT; |