diff --git a/common/main/endlevel.h b/common/main/endlevel.h index ca8f75e40..83d2d0123 100644 --- a/common/main/endlevel.h +++ b/common/main/endlevel.h @@ -50,7 +50,7 @@ extern segnum_t exit_segnum; //called for each level to load & setup the exit sequence void load_endlevel_data(int level_num); -extern int exit_modelnum, destroyed_exit_modelnum; +extern unsigned exit_modelnum, destroyed_exit_modelnum; extern vms_matrix surface_orient; #endif diff --git a/similar/main/bm.cpp b/similar/main/bm.cpp index ab58b63c5..fdec04772 100644 --- a/similar/main/bm.cpp +++ b/similar/main/bm.cpp @@ -394,10 +394,10 @@ static void bm_free_extra_objbitmaps() static void bm_free_extra_models() { - while (N_polygon_models > N_D2_POLYGON_MODELS) - free_model(&Polygon_models[--N_polygon_models]); - while (N_polygon_models > exit_modelnum) - free_model(&Polygon_models[--N_polygon_models]); + auto base = std::min(N_D2_POLYGON_MODELS, exit_modelnum); + range_for (auto &p, partial_range(Polygon_models, base, N_polygon_models)) + free_model(&p); + N_polygon_models = base; } //type==1 means 1.1, type==2 means 1.2 (with weapons) diff --git a/similar/main/endlevel.cpp b/similar/main/endlevel.cpp index c3efc4414..2b07cf91c 100644 --- a/similar/main/endlevel.cpp +++ b/similar/main/endlevel.cpp @@ -158,14 +158,14 @@ static grs_bitmap *satellite_bitmap; grs_bitmap *terrain_bitmap; //!!*exit_bitmap, vms_vector satellite_pos,satellite_upvec; //!!grs_bitmap **exit_bitmap_list[1]; -int station_modelnum,exit_modelnum,destroyed_exit_modelnum; +unsigned exit_modelnum,destroyed_exit_modelnum; static vms_vector station_pos{0xf8c4<<10,0x3c1c<<12,0x372<<10}; #ifdef STATION_ENABLED static grs_bitmap *station_bitmap; grs_bitmap **station_bitmap_list[1]; -int station_modelnum; +static unsigned station_modelnum; #endif vms_vector mine_exit_point;