From 2e30aa882c19ba63f41edca68d21ad9e4e6177f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20Ph=C3=A9nix?= Date: Sat, 21 Nov 2020 13:12:25 -0500 Subject: [PATCH] XEEN: Fix build warning by adding SpriteResource copy constructor --- engines/xeen/sprites.cpp | 19 ++++++++++++------- engines/xeen/sprites.h | 7 ++++++- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/engines/xeen/sprites.cpp b/engines/xeen/sprites.cpp index cb2a02d5832..0db9b84b25b 100644 --- a/engines/xeen/sprites.cpp +++ b/engines/xeen/sprites.cpp @@ -40,29 +40,27 @@ int SpriteResource::_clippedBottom; SpriteResource::SpriteResource() { _filesize = 0; _data = nullptr; - _scaledWidth = _scaledHeight = 0; } SpriteResource::SpriteResource(const Common::String &filename) { _data = nullptr; - _scaledWidth = _scaledHeight = 0; load(filename); } SpriteResource::SpriteResource(const Common::String &filename, int ccMode) { _data = nullptr; - _scaledWidth = _scaledHeight = 0; load(filename, ccMode); } +SpriteResource::SpriteResource(const SpriteResource &src) { + copy(src); +} + SpriteResource::~SpriteResource() { clear(); } -SpriteResource &SpriteResource::operator=(const SpriteResource &src) { - delete[] _data; - _index.clear(); - +void SpriteResource::copy(const SpriteResource &src) { _filesize = src._filesize; _data = new byte[_filesize]; Common::copy(src._data, src._data + _filesize, _data); @@ -70,6 +68,13 @@ SpriteResource &SpriteResource::operator=(const SpriteResource &src) { _index.resize(src._index.size()); for (uint i = 0; i < src._index.size(); ++i) _index[i] = src._index[i]; +} + +SpriteResource &SpriteResource::operator=(const SpriteResource &src) { + delete[] _data; + _index.clear(); + + copy(src); return *this; } diff --git a/engines/xeen/sprites.h b/engines/xeen/sprites.h index 366ad5e1ab6..4261e36215c 100644 --- a/engines/xeen/sprites.h +++ b/engines/xeen/sprites.h @@ -54,7 +54,6 @@ private: Common::Array _index; size_t _filesize; byte *_data; - int _scaledWidth, _scaledHeight; Common::String _filename; static int _clippedBottom; @@ -74,10 +73,16 @@ private: */ void draw(int windowNum, int frame, const Common::Point &destPos, const Common::Rect &bounds, uint flags = 0, int scale = 0); + + /** + * Deep copy assuming that the current instance is clean + */ + void copy(const SpriteResource &src); public: SpriteResource(); SpriteResource(const Common::String &filename); SpriteResource(const Common::String &filename, int ccMode); + SpriteResource(const SpriteResource &src); virtual ~SpriteResource();