From c6422e087257d661a30ee2cd281ccec91f2f90ca Mon Sep 17 00:00:00 2001 From: sfan5 Date: Fri, 10 Jul 2020 12:11:44 +0200 Subject: [PATCH] Remove std::shared_ptr use in TileLayer (#10090) --- src/client/tile.h | 3 +-- src/nodedef.cpp | 14 +++++++++++++- src/nodedef.h | 2 +- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/client/tile.h b/src/client/tile.h index 52e0a2b2b..e1d6c348f 100644 --- a/src/client/tile.h +++ b/src/client/tile.h @@ -25,7 +25,6 @@ with this program; if not, write to the Free Software Foundation, Inc., #include #include #include -#include #include "util/numeric.h" #include "config.h" @@ -284,7 +283,7 @@ struct TileLayer //! If true, the tile has its own color. bool has_color = false; - std::shared_ptr> frames = nullptr; + std::vector *frames = nullptr; /*! * The color of the tile, or if the tile does not own diff --git a/src/nodedef.cpp b/src/nodedef.cpp index a84338752..e5cd2c2a7 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -317,6 +317,18 @@ ContentFeatures::ContentFeatures() reset(); } +ContentFeatures::~ContentFeatures() +{ +#ifndef SERVER + for (u16 j = 0; j < 6; j++) { + delete tiles[j].layers[0].frames; + delete tiles[j].layers[1].frames; + } + for (u16 j = 0; j < CF_SPECIAL_COUNT; j++) + delete special_tiles[j].layers[0].frames; +#endif +} + void ContentFeatures::reset() { /* @@ -662,7 +674,7 @@ static void fillTileAttribs(ITextureSource *tsrc, TileLayer *layer, } else { std::ostringstream os(std::ios::binary); if (!layer->frames) { - layer->frames = std::make_shared>(); + layer->frames = new std::vector(); } layer->frames->resize(frame_count); diff --git a/src/nodedef.h b/src/nodedef.h index 0992001e1..cf03abaae 100644 --- a/src/nodedef.h +++ b/src/nodedef.h @@ -409,7 +409,7 @@ struct ContentFeatures */ ContentFeatures(); - ~ContentFeatures() = default; + ~ContentFeatures(); void reset(); void serialize(std::ostream &os, u16 protocol_version) const; void deSerialize(std::istream &is);