https://gitlab.synchro.net/main/sbbs/-/commit/f2d0fb57aa7f1bd50336d97b
Modified Files:
src/doors/syncduke/Game/src/game.c src/doors/syncduke/README.md xtrn/syncduke/syncduke.example.ini
Log Message:
syncduke: fix /g stack overflow; correct add-on CON docs (D.C. validated)
Validated the lobby picker's add-on-GRP path end-to-end with Duke It Out
In D.C. (Megaton packaging: CON scripts, replacement ART and all ten maps inside dukedc.grp) -- the episode menu lists the add-on episode and
DUKEDC1 renders with its replacement art, headless FIFO+PPM-capture
driven.
Two fixes fell out:
- Game/src/game.c: the vendored /g (add-on group file) handler declared
char fullpathgrpfile[16] -- with upstream's own "// 16 not enough"
comment -- so any /g path over 15 characters smashed the stack, i.e.
every absolute path the lobby picker generates. Widened to 512.
The mechanics are otherwise sound: the base GRP loads before
checkcommandline() parses /g, and kopen4load() searches group files
newest-first, so the add-on's CONs/ART shadow the base with /g alone.
- README.md + syncduke.example.ini: both [map:*] examples paired the
D.C. entry with "con = addons/dukedc.con", but the usual add-on GRP
packaging carries its CON scripts inside the GRP (no such loose file
exists), and a con= pointing at a missing file makes the engine
Error()-exit at launch. Dropped con= from the example and documented
when it actually applies (add-ons shipping loose CON files only).
Co-Authored-By: Claude Fable 5 <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net