summaryrefslogtreecommitdiff
path: root/src/easy_chat.c
diff options
context:
space:
mode:
authorMichael Panzlaff <michael.panzlaff@fau.de>2020-05-09 14:49:51 +0200
committerMichael Panzlaff <michael.panzlaff@fau.de>2020-07-05 18:09:59 +0200
commit3264cf697f5fe996c2a79c6c34181c186fe2f96e (patch)
tree919e94607188da2a6e561f41dfba39e3a7558b24 /src/easy_chat.c
parent46f4a4bbf7239743c333cd32d30b74a7b3176acc (diff)
fix aggressive loop optimizations
Previously, aggressive loop optimizations with a new compiler were not possible due to undefined behaviour at end of arrays. A macro "UBFIX" is added to allow ifdefs for fixes which resolve undefined behavior. For example newer GCC versions will detect various bugs in the original game code and will otherwise not compile with -Werror.
Diffstat (limited to 'src/easy_chat.c')
-rw-r--r--src/easy_chat.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/easy_chat.c b/src/easy_chat.c
index 1bdb3fdc0..2a4c49213 100644
--- a/src/easy_chat.c
+++ b/src/easy_chat.c
@@ -5273,12 +5273,17 @@ void InitEasyChatPhrases(void)
gSaveBlock1Ptr->mail[i].words[j] = 0xFFFF;
}
+#ifndef UBFIX
// BUG: This is supposed to clear 64 bits, but this loop is clearing 64 bytes.
// However, this bug has no resulting effect on gameplay because only the
// Mauville old man data is corrupted, which is initialized directly after
// this function is called when starting a new game.
for (i = 0; i < 64; i++)
gSaveBlock1Ptr->additionalPhrases[i] = 0;
+#else
+ for (i = 0; i < ARRAY_COUNT(gSaveBlock1Ptr->additionalPhrases); i++)
+ gSaveBlock1Ptr->additionalPhrases[i] = 0;
+#endif
}
static bool8 sub_811F28C(void)