https://gitlab.synchro.net/main/sbbs/-/commit/705a840fe95017643a65bdfc
Modified Files:
src/doors/syncduke/Game/src/game.c src/doors/syncduke/syncduke_config.c Log Message:
syncduke: fix two Windows door startup failures (setvbuf, GRP dir)
Both killed the Win32 door at launch -- it died straight back to the BBS
after the "Loading..." splash; found while bringing up the MSVC build.
1. syncduke_config.c: setvbuf(stdout, NULL, _IOLBF, 0) (used to route the
engine's diagnostics to the BBS log) is fine on glibc, but MSVC's CRT
rejects _IOLBF with size 0 (it requires size >= 2) -> invalid-parameter
fast-fail (c0000409), confirmed from the WER minidump. Use _IONBF on
Windows (unbuffered, valid with size 0, flushes immediately); *nix keeps
_IOLBF.
2. Game/src/game.c: the Windows findGRPToUse() never consulted
syncduke_grpdir (only the *nix branch did), so with -home (CWD = the
per-user dir) it scanned the wrong directory and exited with
"Can't find 'duke3d*.grp'". Honor syncduke_grpdir first, mirroring the
*nix branch, so the GRP opens by absolute path regardless of CWD.
Verified on Windows via an inherited-socket harness matching the live launch (-s<socket> -home <userdir>): loads DUKE3D.GRP by absolute path and renders (sixel and JXL tiers).
Co-Authored-By: Claude Opus 4.8 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net