From 0df71462268aa888ec0b5e18341c943cf12fb9d5 Mon Sep 17 00:00:00 2001 From: zicodxx Date: Sat, 24 Sep 2011 22:03:33 +0200 Subject: [PATCH] Reworked wall_toggle() to work with index for segnum instead of a pointer, hopefully making the consistency check less error prone --- CHANGELOG.txt | 1 + main/cntrlcen.c | 2 +- main/newdemo.c | 2 +- main/switch.c | 2 +- main/wall.c | 20 ++++++++++++-------- main/wall.h | 2 +- 6 files changed, 17 insertions(+), 12 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index a59409447..2116edc23 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -3,6 +3,7 @@ D1X-Rebirth Changelog 20110924 -------- main/fvi.c, main/gameseg.c, main/object.c: Consistency check for segment number in find_vector_intersection() and obj_create(); Added more debug output for invalid segment numberin get_seg_masks() +main/cntrlcen.c, main/newdemo.c, main/switch.c, main/wall.c, main/wall.h: Reworked wall_toggle() to work with index for segnum instead of a pointer, hopefully making the consistency check less error prone 20110923 -------- diff --git a/main/cntrlcen.c b/main/cntrlcen.c index a112bbffc..d37ba8cbd 100644 --- a/main/cntrlcen.c +++ b/main/cntrlcen.c @@ -210,7 +210,7 @@ void do_controlcen_destroyed_stuff(object *objp) // Must toggle walls whether it is a boss or control center. for (i=0;i Highest_segment_index || side < 0 || side >= MAX_SIDES_PER_SEGMENT) + { +#ifndef NDEBUG + Warning("Can't toggle side %d (%i) of\nsegment %d (%i)!\n", side, MAX_SIDES_PER_SEGMENT, segnum, Highest_segment_index); +#endif + return; + } - wall_num = seg->sides[side].wall_num; + wall_num = Segments[segnum].sides[side].wall_num; if (wall_num == -1) { return; } if ( Newdemo_state == ND_STATE_RECORDING ) - newdemo_record_wall_toggle(seg-Segments, side ); + newdemo_record_wall_toggle(segnum, side ); if (Walls[wall_num].type == WALL_BLASTABLE) - wall_destroy(seg, side); + wall_destroy(&Segments[segnum], side); if ((Walls[wall_num].type == WALL_DOOR) && (Walls[wall_num].state == WALL_DOOR_CLOSED)) - wall_open_door(seg, side); - + wall_open_door(&Segments[segnum], side); } diff --git a/main/wall.h b/main/wall.h index 609e67878..569d31e67 100644 --- a/main/wall.h +++ b/main/wall.h @@ -215,7 +215,7 @@ extern void wall_close_door(int wall_num); extern int wall_hit_process(segment *seg, int side, fix damage, int playernum, object *obj ); // Opens/destroys specified door. -extern void wall_toggle(segment *seg, int side); +extern void wall_toggle(int segnum, int side); // Tidy up Walls array for load/save purposes. extern void reset_walls();