You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
gt2reloc segfault when packing a song (issue #71): the relocation-time playback runs on gtEditorObject, whose sidreg[] pointers are intentionally never wired via initSID (only gtObject is). The main app marks that object silent (noSIDWrites = 1) so playroutine skips SID register writes; gt2reloc omitted the flag, so it dereferenced NULL sidreg[i] (gplay.c:435). Now sets gtEditorObject.noSIDWrites = 1, matching gt2stereo.c. Also fixes an ASan global-buffer-overflow: loadedsongfilename was declared [MAX_FILENAME] (60) in gt2reloc.c vs the [MAX_PATHNAME] (256) extern, overflowed by clearsong's memset. Re-enables the gt2reloc functional smoke test (packs the fixture to both .prg and .sid with the fixture's canonical flags -AFF00 -B2 -H1 -U6, exercising the stereo/2-SID and buffered-write player paths) and the Linux ASan usage checks. Reported by @moraff. Also silenced injected debug output in the vendored assembler (src/asm/asmtab.c: forced yydebug = 1 plus stray Assemble checkN / Starting parse prints) that flooded the logs on every pack; this realigns with Exomizer 3 upstream, which sets yydebug = 0 and has none of those prints. Also gave gt2reloc a custom SDL_LogSetOutputFunction so its INFO: lines are identical on Linux/macOS/Windows (macOS otherwise routes SDL_Log through NSLog, prepending a timestamp/process prefix); the same inconsistency in the other apps is tracked in known-bugs.md (Bug 5). Removed an unconditional debug_0.s dump (greloc.c) that wrote the generated player assembly into the current directory on every relocation/pack (also an unchecked fopen); this affected both gt2reloc and the gtultra export path. The custom log function guards a NULL STDERR (on Windows STDERR is reopened via fopen("CON"), which can fail in a headless/CI shell and previously crashed the pack).
-Wpointer-to-int-cast (11 warnings) in the vendored Exomizer assembler src/asm/{expr,parse}.c: debug LOG() dump helpers truncated 64-bit pointers via (u32) casts. Backported the %p/(void*) formatting from current Exomizer upstream (each site license-marked). Supersedes PR #13; thanks @drfiemost for the report.
src/version.h now tracks the actual release version (was stale at 1.5.6, so the 1.5.7 build reported the wrong version). CLAUDE.md now requires bumping version.h and the CHANGELOG together.
Changed
Release workflow: node24 artifact actions, shallow single-tag release checkouts (avoids legacy mixed-case tag collision on case-insensitive runners)