Bug: Rdelete does not fix reverse exits. Rdelete does not unlink room from area.
Danger: Critical - Access to invalid data, crash probability, corrupted data possible.
Found by: Remcon
Fixed by: Samson/Remcon
---
build.c
Near the top of the file, add:
void fix_exits( void );
In the do_rdelete function, locate:
delete_room( location );
Below that, add:
fix_exits(); /* Need to call this to solve a crash */
db.c, delete_room
Locate:
MPROG_ACT_LIST *mpact;
MPROG_DATA *mp;
Below that, add:
UNLINK( room, room->area->first_room, room->area->last_room, next_aroom, prev_aroom );
If this fix is not done, the worst possible case of things can happen: Someone will be able to walk into a room which the code beleives has been deleted from memory. Being able to access invalidated data in any way will lead to all sorts of really uncool problems that one should avoid at all costs, not the least of which is the possibility this could have corrupted the area files if it managed to save the data. Since it's never removed from the area's list of rooms, it allows the reset code access to a borked room which just makes things that much worse.