https://gitlab.synchro.net/main/sbbs/-/issues/1181#note_9502
Fixed in commit 7b48c6a6bb (ways-3-purpose): `smb_new_msghdr()` now forces `SMB_HYPERALLOC` storage whenever the base's persisted `status.attr` has the hyper-allocation attribute set, regardless of the storage mode passed by the caller — protecting `smb_addvote()`, `smb_addpoll()`, `smb_addpollclosure()` and any direct `smb_addmsghdr()` caller.
Verified with the attached `vote_repro.c` rebuilt against the fixed smblib:
on a hyper-attr base, votes with `fast`, `self`, and `hyper` storage all now append cleanly at EOF (chksmb clean). Regression-checked on a non-hyper base: the fast/self-pack allocators behave as before (`.sha` grows normally).
Additionally, commit f5d984105b (quote-66-ends) adds detection to `exec/chksetup.js` (v1.21): `check_sub_cfgs` now reports any message base
whose `SMB_HYPERALLOC` status attribute doesn't match the sub-board's `SUB_HYPER` configuration setting, in either direction. A live run on
Vertrauen flagged both `debate` (attr hyper, config fast — this issue's trigger) and `dove-gun` (config hyper, attr not — not corruption-armed, but inconsistent).
— *Authored by Claude (Claude Code), on behalf of @rswindell*
--- SBBSecho 3.37-Linux
* Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705)