From 18bab30c5977e69f3b82c2e6149516acf3f42517 Mon Sep 17 00:00:00 2001 From: fgsfds Date: Wed, 9 Aug 2023 13:07:02 +0200 Subject: [PATCH] port: more UB/bug fixes --- src/lib/mema.c | 2 ++ src/lib/naudio/n_csplayer.c | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/src/lib/mema.c b/src/lib/mema.c index 2cab707df..7cbe894c0 100644 --- a/src/lib/mema.c +++ b/src/lib/mema.c @@ -219,6 +219,7 @@ void memaReset(void *heapaddr, u32 heapsize) { struct memaspace *space; +#ifdef PLATFORM_N64 #ifndef DEBUG // Adding an amount to the heap size here means that mema can allocate past // the end of its heap. This would overflow into the gun names language @@ -226,6 +227,7 @@ void memaReset(void *heapaddr, u32 heapsize) // meant for it to be ifdef instead? // @bug @dangerous heapsize += 0x8e0; +#endif #endif g_MemaHeap.unk000 = 0; diff --git a/src/lib/naudio/n_csplayer.c b/src/lib/naudio/n_csplayer.c index f8e849c86..94aff0d81 100644 --- a/src/lib/naudio/n_csplayer.c +++ b/src/lib/naudio/n_csplayer.c @@ -936,12 +936,18 @@ void __n_CSPHandleMIDIMsg(N_ALCSPlayer *seqp, N_ALEvent *event) } else if (vs->phase == AL_PHASE_SUSTREL) { vs->phase = AL_PHASE_RELEASE; +#ifdef AVOID_UB + chanstate = &seqp->chanState[chan]; +#endif // @bug: chanstate is uninitialised if (chanstate->unk24) { __n_seqpReleaseVoice((N_ALSeqPlayer*)seqp, &vs->voice, (seqp->chanState[chan].releaseTime < AL_USEC_PER_FRAME ? AL_USEC_PER_FRAME : seqp->chanState[chan].releaseTime)); } else { +#ifdef AVOID_UB + vstate = __n_lookupVoice((N_ALSeqPlayer*)seqp, key, chan); +#endif __n_seqpReleaseVoice((N_ALSeqPlayer*)seqp, &vs->voice, vstate->sound->envelope->releaseTime < AL_USEC_PER_FRAME ? AL_USEC_PER_FRAME : vstate->sound->envelope->releaseTime);