Context
P_UnArchiveSpecials in room/src/doom/p_saveg.rs deserializes special thinkers (ceilings, floors, platforms, etc.) from a save file.
C behavior
p_saveg.c allocates the ceiling_t block with the zone tag PU_LEVEL.
Rust behavior
The Rust port uses PU_LEVSPEC for consistency with other specials' allocation.
Impact
PU_LEVEL and PU_LEVSPEC differ in when the zone allocator may purge the block. Diverging from C here could change save-load fidelity or zone-fragmentation behavior in edge cases.
Location
room/src/doom/p_saveg.rs:1968 (flagged with // FIXME:).
Suggested fix
Either:
- match C exactly and use
PU_LEVEL for the unarchived ceiling_t, or
- audit other specials' allocation tags in
p_saveg.c and document why the Rust port standardizes on PU_LEVSPEC.
Context
P_UnArchiveSpecialsinroom/src/doom/p_saveg.rsdeserializes special thinkers (ceilings, floors, platforms, etc.) from a save file.C behavior
p_saveg.callocates theceiling_tblock with the zone tagPU_LEVEL.Rust behavior
The Rust port uses
PU_LEVSPECfor consistency with other specials' allocation.Impact
PU_LEVELandPU_LEVSPECdiffer in when the zone allocator may purge the block. Diverging from C here could change save-load fidelity or zone-fragmentation behavior in edge cases.Location
room/src/doom/p_saveg.rs:1968(flagged with// FIXME:).Suggested fix
Either:
PU_LEVELfor the unarchivedceiling_t, orp_saveg.cand document why the Rust port standardizes onPU_LEVSPEC.