You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
add move semantics for message media references (scp-fs2open#7517)
MMessage's avi_info/wave_info unions hold strdup'd filenames in FRED
(indices in the game), but moves copied the pointers without nulling
the source, so every vector shift on Messages left moved-from elements
aliasing live allocations -- one careless edit away from a double-free.
Wrap each union in a MessageMediaRef struct whose moves null the source
and whose copies stay shallow (the event editor's backup pattern copies
then re-strdups). MMessage keeps its implicit copy and gains a correct
implicit move; access syntax at all use sites is unchanged.
Add a message_free_media_names() helper and use it at the FRED
delete/wipe sites. Two fixes ride along: messages_init() now frees
mission messages' media names before discarding them, closing a leak
that fired on every mission load in FRED; and the message editor's
OnDelete now uses the move-based array_remove_slot instead of a
copy-shift that left a stale aliasing tail.
No destructor: the active union member depends on Fred_running, and
shallow copies alias, so freeing remains explicit.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
0 commit comments