• src/doors/syncduke/Game/src/game.c src/doors/syncduke/README.md xtrn/s

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Sunday, July 05, 2026 18:04:01
    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