summaryrefslogtreecommitdiff
path: root/src/level.cpp
diff options
context:
space:
mode:
authorcflip <cflip@cflip.net>2022-03-23 17:58:47 -0600
committercflip <cflip@cflip.net>2022-03-23 17:58:47 -0600
commitff32f311e2b6c554e4f7b91ad42cee44abdd9c40 (patch)
treea876b1eb3b83294363b24fd445b651cb793bf0ae /src/level.cpp
parente088328b1c9679359458a1065c30e0dcfb085021 (diff)
Reallocate tilemap on level load
This prevents some issues with loading levels that are larger than the current one.
Diffstat (limited to 'src/level.cpp')
-rw-r--r--src/level.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/level.cpp b/src/level.cpp
index bfbf6ae..5fa4619 100644
--- a/src/level.cpp
+++ b/src/level.cpp
@@ -150,8 +150,14 @@ void Level::load()
inputStream.read((char*)&width, 1);
inputStream.read((char*)&height, 1);
- int size = width * height;
- inputStream.read((char*)m_tiles, size);
+ int oldSize = m_width * m_height;
+ int newSize = width * height;
+ if (oldSize != newSize) {
+ delete[] m_tiles;
+ m_tiles = new uint8_t[newSize];
+ }
+
+ inputStream.read((char*)m_tiles, newSize);
inputStream.close();
m_width = width;