https://gitlab.synchro.net/main/sbbs/-/commit/893817954cb42bd437b8c796
Modified Files:
src/sbbs3/smbutil.c
Log Message:
smbutil pack: free the space of a message it drops
When pack drops a message whose data it can't copy, or for which it can't allocate a header, the data space already allocated for it in the packed
base was left allocated with nothing referencing it: blocks lost until the
next pack. Both skip paths were added by aee485f478 (reducing-28-isle, 2026-09-15).
Pack only appends to the new .sdt and .sda, so the dropped message's data
is always the last allocation in each; pack_drop_dat() truncates both back
to where it started. smb_freemsgdat() isn't usable mid-pack: it unlocks
the SMB header pack holds, and it truncates smb.sdt_fp, which is the
original data file being read.
For data shared with an earlier index, the extra reference is now added
only once the header is allocated, so a header failure leaves nothing to
undo.
Co-Authored-By: Claude Opus 5.5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net