From df58cc2799cf6e3210965e335fbd446b4802ee9d Mon Sep 17 00:00:00 2001 From: Isaac0-dev <62234577+Isaac0-dev@users.noreply.github.com> Date: Sun, 9 Feb 2025 20:16:47 +1000 Subject: [PATCH] fix some crashes thanks to @not6 for finding the save file one --- src/audio/external.c | 1 + src/game/save_file.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/audio/external.c b/src/audio/external.c index 0bfefa31f..056e858b4 100644 --- a/src/audio/external.c +++ b/src/audio/external.c @@ -2950,6 +2950,7 @@ void sound_reset_background_music_default_volume(u8 seqId) { } void sound_set_background_music_default_volume(u8 seqId, u8 volume) { + if (seqId >= MAX_AUDIO_OVERRIDE) { return; } sBackgroundMusicDefaultVolume[seqId] = volume; } diff --git a/src/game/save_file.c b/src/game/save_file.c index 7fcc0689b..85efa72f1 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -27,7 +27,7 @@ #define INVALID_SRC_SLOT(_ss) ((u32)_ss >= 2) #define INVALID_LEVEL_NUM(_ln) ((u32)_ln >= LEVEL_COUNT) #define INVALID_COURSE_STAR_INDEX(_ci) ((u32)_ci >= COURSE_COUNT) -#define INVALID_COURSE_COIN_INDEX(_ci) ((u32)_ci >= COURSE_COUNT) +#define INVALID_COURSE_COIN_INDEX(_ci) ((u32)_ci >= COURSE_STAGES_COUNT) STATIC_ASSERT(sizeof(struct SaveBuffer) == EEPROM_SIZE, "eeprom buffer size must match"); @@ -738,6 +738,9 @@ s32 save_file_get_course_coin_score(s32 fileIndex, s32 courseIndex) { } void save_file_set_course_coin_score(s32 fileIndex, s32 courseIndex, u8 coinScore) { + if (INVALID_FILE_INDEX(fileIndex)) { return; } + if (INVALID_SRC_SLOT(gSaveFileUsingBackupSlot)) { return; } + if (INVALID_COURSE_COIN_INDEX(courseIndex)) { return; } gSaveBuffer.files[fileIndex][gSaveFileUsingBackupSlot].courseCoinScores[courseIndex] = coinScore; }