diff --git a/third_party/agg23/agg_path_storage.cpp b/third_party/agg23/agg_path_storage.cpp index 2cd0caed1..1491e9e33 100644 --- a/third_party/agg23/agg_path_storage.cpp +++ b/third_party/agg23/agg_path_storage.cpp @@ -43,14 +43,20 @@ path_storage::~path_storage() FX_Free(m_coord_blocks); } } -path_storage::path_storage() : - m_total_vertices(0), - m_total_blocks(0), - m_max_blocks(0), - m_coord_blocks(0), - m_cmd_blocks(0), - m_iterator(0) -{ +path_storage::path_storage() = default; +path_storage::path_storage(path_storage&& other) { + m_total_vertices = other.m_total_vertices; + m_total_blocks = other.m_total_blocks; + m_max_blocks = other.m_max_blocks; + m_coord_blocks = other.m_coord_blocks; + m_cmd_blocks = other.m_cmd_blocks; + m_iterator = other.m_iterator; + other.m_total_vertices = 0; + other.m_total_blocks = 0; + other.m_max_blocks = 0; + other.m_coord_blocks = nullptr; + other.m_cmd_blocks = nullptr; + other.m_iterator = 0; } void path_storage::allocate_block(unsigned nb) { diff --git a/third_party/agg23/agg_path_storage.h b/third_party/agg23/agg_path_storage.h index 55d6df001..8f10ff36d 100644 --- a/third_party/agg23/agg_path_storage.h +++ b/third_party/agg23/agg_path_storage.h @@ -50,6 +50,10 @@ public: }; ~path_storage(); path_storage(); + path_storage(path_storage&& other); + path_storage& operator=(path_storage&&) = delete; + path_storage(const path_storage&) = delete; + path_storage& operator=(const path_storage&) = delete; unsigned last_vertex(float* x, float* y) const; unsigned prev_vertex(float* x, float* y) const; void move_to(float x, float y); @@ -116,12 +120,12 @@ private: void allocate_block(unsigned nb); unsigned char* storage_ptrs(float** xy_ptr); private: - unsigned m_total_vertices; - unsigned m_total_blocks; - unsigned m_max_blocks; - float** m_coord_blocks; - unsigned char** m_cmd_blocks; - unsigned m_iterator; + unsigned m_total_vertices = 0; + unsigned m_total_blocks = 0; + unsigned m_max_blocks = 0; + float** m_coord_blocks = nullptr; + unsigned char** m_cmd_blocks = nullptr; + unsigned m_iterator = 0; }; inline unsigned path_storage::vertex(float* x, float* y) {