fix(phase-29): engine_core.h — func_80144B14 declared int(int), not void(void)

The ARITY blocker did not apply: DEFINE_func_* does not CALL func_80144B14, it takes its ADDRESS
(`*(s32 *)((s32)a0 + 0xDC) = (s32)&func_80144B14;`). There is no call site to break, so the FULL
correction is available rather than the §99 no-prototype workaround.

That is a refinement the audit needs: the ARITY precondition asks whether the macro's own call site
would break, but an address-taken use has no call site. Over-fires on that shape.

§85: 0 consumers, so the void->int return widening is byte-neutral.

Verified in two steps (T48 discipline): header change ALONE, no src change, R22 clean-fleet 140
passed, 0 failed of 140. Fleet-shared (§61/§63), R22 mandatory.

Probe target switched from func_8013BD34 on measured evidence: that one's definition lives in
ov_SC07_010_o0.c, and _o0 families sweep ~1/137, making it a poor test of an unproven technique.
func_80144B14 is the same class, 137 stubs, not -O0, with a real 34x137 family.
This commit is contained in:
Drew T
2026-07-29 00:23:14 -06:00
parent 3233ff3f81
commit df86fcce50
+1 -1
View File
@@ -2439,7 +2439,7 @@
}
#define DEFINE_func_80144AEC() \
extern void func_80144B14(void); \
extern int func_80144B14(int param_1); \
void func_80144AEC(s32 *a0) { \
s32 old; \
old = *(s32 *)((s32)a0 + 0xDC); \