diff --git a/common/include/u_mem.h b/common/include/u_mem.h index 6b9df8d67..50bf8bffd 100644 --- a/common/include/u_mem.h +++ b/common/include/u_mem.h @@ -91,12 +91,12 @@ public: } }; -template -class RAIIdmem : public std::unique_ptr> +template ::type> +class RAIIdmem : public std::unique_ptr> { static_assert(tt::is_pod::value, "RAIIdmem cannot manage non-POD"); public: - DXX_INHERIT_CONSTRUCTORS(RAIIdmem, std::unique_ptr>); + DXX_INHERIT_CONSTRUCTORS(RAIIdmem, std::unique_ptr>); operator T*() const #ifdef DXX_HAVE_CXX11_REF_QUALIFIER & @@ -110,14 +110,14 @@ template T *MALLOC(RAIIdmem &r, std::size_t count, const char *var, const char *file, unsigned line) { T *p; - return r = RAIIdmem(MALLOC(p, count, var, file, line)); + return r.reset(MALLOC(p, count, var, file, line)), p; } template T *CALLOC(RAIIdmem &r, std::size_t count, const char *var, const char *file, unsigned line) { T *p; - return r = RAIIdmem(CALLOC(p, count, var, file, line)); + return r.reset(CALLOC(p, count, var, file, line)), p; } #define MALLOC( var, type, count ) (MALLOC(var, (count)*sizeof(type),#var, __FILE__,__LINE__ )) diff --git a/similar/main/terrain.cpp b/similar/main/terrain.cpp index b547198b9..ea8ba28ee 100644 --- a/similar/main/terrain.cpp +++ b/similar/main/terrain.cpp @@ -50,7 +50,7 @@ COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. static int grid_w,grid_h; -static ubyte *height_array; +static RAIIdmem height_array; static std::unique_ptr light_array; #define HEIGHT(_i,_j) (height_array[(_i)*grid_w+(_j)]) @@ -327,8 +327,7 @@ void render_terrain(const vms_vector &org_point,int org_2dx,int org_2dy) void free_height_array() { - if (height_array) - d_free(height_array); + height_array.reset(); } void load_terrain(const char *filename) @@ -342,17 +341,13 @@ void load_terrain(const char *filename) if (iff_error != IFF_NO_ERROR) { Error("File %s - IFF error: %s",filename,iff_errormsg(iff_error)); } - - if (height_array) - d_free(height_array); - grid_w = height_bitmap.bm_w; grid_h = height_bitmap.bm_h; Assert(grid_w <= GRID_MAX_SIZE); Assert(grid_h <= GRID_MAX_SIZE); - height_array = height_bitmap.get_bitmap_data(); + height_array.reset(height_bitmap.get_bitmap_data()); max_h=0; min_h=255; for (i=0;i