https://gitlab.synchro.net/main/sbbs/-/commit/2a0ee8dd1af8b0aad31440fb
Modified Files:
src/sbbs3/chat.cpp
Log Message:
chat.cpp: hoist declarations to satisfy GCC's "goto crosses init" rule
Build broke on GCC (linux-x64 CI) in chat_llm_session() and chat_llm_multinode_turn() -- introduced in 683147f9c -- because the
gotos to js_done / mt_done / cleanup labels skipped past
initializations of local variables that were still in scope at the
label. MSVC accepts this with at most a warning; GCC errors.
Fixes:
- chat_llm_session(): hoisted `bool supports_utf8` above any
`goto cleanup`. Hoisted `double speed_factor` / `bool sim_typos`
to the top of the JS_BEGINREQUEST block, above any `goto js_done`
from within (they were below the gotos but in the same scope as
the label).
- chat_llm_multinode_turn(): hoisted `bool supports_utf8` above any
`goto mt_done`. Wrapped the `JSString* input_str` / `jsval
chat_args[]` declarations in an inner brace block so they fall
out of scope before `mt_done:` instead of straddling it.
Verified locally by single-file MSVC build of chat.cpp (0 errors,
0 warnings). Structural fix targets exactly the cross-init errors
GCC reported.
CI failure:
https://gitlab.synchro.net/main/sbbs/-/jobs/1509516
Co-Authored-By: Claude Opus 4.7 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net