summaryrefslogtreecommitdiffstats
path: root/src/MinedMap.cpp
diff options
context:
space:
mode:
authorMatthias Schiffer <mschiffer@universe-factory.net>2015-02-04 09:00:34 +0100
committerMatthias Schiffer <mschiffer@universe-factory.net>2015-02-04 09:00:34 +0100
commite4b1919ba8da9929051777d6a5945fc5625e0d8d (patch)
treede47c8a29f58aaf35d55f13589ce3dd64647207b /src/MinedMap.cpp
parent61f47521a94168739ca031aab6eb5fe81531a024 (diff)
downloadMinedMap-e4b1919ba8da9929051777d6a5945fc5625e0d8d.tar
MinedMap-e4b1919ba8da9929051777d6a5945fc5625e0d8d.zip
Use heap memory for image buffers
Diffstat (limited to 'src/MinedMap.cpp')
-rw-r--r--src/MinedMap.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/src/MinedMap.cpp b/src/MinedMap.cpp
index 8f548b6..8cf9393 100644
--- a/src/MinedMap.cpp
+++ b/src/MinedMap.cpp
@@ -127,12 +127,16 @@ static void doRegion(const std::string &input, const std::string &output, const
std::printf("Generating %s from %s...\n", output.c_str(), input.c_str());
try {
- uint32_t image[DIM*DIM] = {};
- uint8_t lightmap[2*DIM*DIM] = {};
- World::Region::visitChunks(input.c_str(), [&] (size_t X, size_t Z, const World::Chunk *chunk) { addChunk(image, lightmap, X, Z, chunk); });
+ std::unique_ptr<uint32_t[]> image(new uint32_t[DIM*DIM]);
+ std::memset(image.get(), 0, 4*DIM*DIM);
- writeImage(output, reinterpret_cast<const uint8_t*>(image), true, &instat.st_mtim);
- writeImage(output_light, lightmap, false, &instat.st_mtim);
+ std::unique_ptr<uint8_t[]> lightmap(new uint8_t[2*DIM*DIM]);
+ std::memset(lightmap.get(), 0, 2*DIM*DIM);
+
+ World::Region::visitChunks(input.c_str(), [&] (size_t X, size_t Z, const World::Chunk *chunk) { addChunk(image.get(), lightmap.get(), X, Z, chunk); });
+
+ writeImage(output, reinterpret_cast<const uint8_t*>(image.get()), true, &instat.st_mtim);
+ writeImage(output_light, lightmap.get(), false, &instat.st_mtim);
}
catch (const std::exception& ex) {
std::fprintf(stderr, "Failed to generate %s: %s\n", output.c_str(), ex.what());