From a6cd87613ce3a58ad132b55c8be7d02b6dfa4591 Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 19 Feb 2017 19:33:44 +0000 Subject: [PATCH] Pass polymodel &to free_model --- common/main/polyobj.h | 2 +- similar/main/bm.cpp | 7 +++---- similar/main/polyobj.cpp | 6 +++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/common/main/polyobj.h b/common/main/polyobj.h index 234cf05b2..92ee71ca4 100644 --- a/common/main/polyobj.h +++ b/common/main/polyobj.h @@ -145,7 +145,7 @@ void draw_model_picture(grs_canvas &, uint_fast32_t mn, const vms_angvec *orient #define MAX_POLYOBJ_TEXTURES 50 #elif defined(DXX_BUILD_DESCENT_II) // free up a model, getting rid of all its memory -void free_model(polymodel *po); +void free_model(polymodel &po); #define MAX_POLYOBJ_TEXTURES 100 constexpr unsigned N_D2_POLYGON_MODELS = 166; diff --git a/similar/main/bm.cpp b/similar/main/bm.cpp index dcbf1efb7..26361a60e 100644 --- a/similar/main/bm.cpp +++ b/similar/main/bm.cpp @@ -400,9 +400,8 @@ static void bm_free_extra_objbitmaps() static void bm_free_extra_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; + range_for (auto &p, partial_range(Polygon_models, base, exchange(N_polygon_models, base))) + free_model(p); } //type==1 means 1.1, type==2 means 1.2 (with weapons) @@ -529,7 +528,7 @@ void load_robot_replacements(const d_fname &level_name) if (i<0 || i>=N_polygon_models) Error("Polygon model (%d) out of range in (%s). Range = [0..%d].",i,static_cast(level_name),N_polygon_models-1); - free_model(&Polygon_models[i]); + free_model(Polygon_models[i]); polymodel_read(&Polygon_models[i], fp); polygon_model_data_read(&Polygon_models[i], fp); diff --git a/similar/main/polyobj.cpp b/similar/main/polyobj.cpp index 1e29ce1b0..2bad362c6 100644 --- a/similar/main/polyobj.cpp +++ b/similar/main/polyobj.cpp @@ -491,9 +491,9 @@ void read_model_guns(const char *filename, reactor &r) #if defined(DXX_BUILD_DESCENT_I) static #endif -void free_model(polymodel *po) +void free_model(polymodel &po) { - po->model_data.reset(); + po.model_data.reset(); } array texture_list; @@ -574,7 +574,7 @@ void draw_polygon_model(grs_canvas &canvas, const vms_vector &pos,const vms_matr void free_polygon_models() { range_for (auto &i, partial_range(Polygon_models, N_polygon_models)) - free_model(&i); + free_model(i); } }