mirror of
https://github.com/jkdansereau/goldeneye-pc-port.git
synced 2026-10-23 15:52:42 +02:00
Q7 audit fixes: missing returns in front.c menus, getenv prototype, dram.c shift UB
- front.c: constructor_menu07_missionsel / constructor_menu0D_missioncomplete fall off the end while the caller uses the Gfx* result; return DL under AVOID_UB (porting-notes D6). Old/new objects disassemble identically at -O2, so no behaviour change on this compiler; clang/arm64 no longer rely on luck. - libultra/audio/event.c: include <stdlib.h> under PORT so getenv() is not an implicit int-returning declaration (D324 class). - dram.c: DRAM_SIZE >> 32 on a 32-bit unsigned long (Win64) was UB. Golden gate 3/3.
This commit is contained in:
1 parent
edddf87429
commit
2ed84ed38b
4 files changed
+22
-1
No files matched your search
@@ -1089,6 +1089,12 @@ silently disappears.
|
||||
upstream. This class isn't limited to display-list cursors; audit any
|
||||
`-O2`-only "quietly broken but not crashing" symptom for the same shape.
|
||||
Fix: `return` under `#ifdef AVOID_UB` (`#else` keeps the N64 body).
|
||||
- Instances (latent, 2026-09-25 Q7 warning audit): `constructor_menu07_missionsel()` and
|
||||
`constructor_menu0D_missioncomplete()` (`src/game/front.c`), both `DL = f(DL)` at the
|
||||
caller. Currently harmless: old/new objects disassemble identically at `-O2` (GCC
|
||||
keeps `frontDrawCursor()`'s result in `rax`), but a clang/arm64 build is not bound
|
||||
by that. `return DL;` under `#ifdef AVOID_UB`. A `-Wreturn-type` sweep lists the
|
||||
remaining candidates; the other 7 current hits have callers that ignore the value.
|
||||
- The one flagged in-source with an explicit comment is
|
||||
`grep -rn "missing a \"return\"" src/` (`gunfire.c`). Others (like D77's)
|
||||
exist without the banner; suspect this class whenever an `-O2` build
|
||||
|
||||
Reference in new issue
Block a user