1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

noise: Throw exception on noise allocation failure

This commit is contained in:
kwolekr 2014-11-29 16:50:18 -05:00
parent a3e019c4f6
commit 25945dc539
3 changed files with 38 additions and 9 deletions

View file

@ -29,6 +29,7 @@
#include <string.h> // memset
#include "debug.h"
#include "util/numeric.h"
#include "exceptions.h"
#define NOISE_MAGIC_X 1619
#define NOISE_MAGIC_Y 31337
@ -336,8 +337,12 @@ Noise::Noise(NoiseParams *np, int seed, int sx, int sy, int sz)
this->noisebuf = NULL;
resizeNoiseBuf(sz > 1);
this->buf = new float[sx * sy * sz];
this->result = new float[sx * sy * sz];
try {
this->buf = new float[sx * sy * sz];
this->result = new float[sx * sy * sz];
} catch (std::bad_alloc &e) {
throw InvalidNoiseParamsException();
}
}
@ -360,8 +365,12 @@ void Noise::setSize(int sx, int sy, int sz)
delete[] buf;
delete[] result;
this->buf = new float[sx * sy * sz];
this->result = new float[sx * sy * sz];
try {
this->buf = new float[sx * sy * sz];
this->result = new float[sx * sy * sz];
} catch (std::bad_alloc &e) {
throw InvalidNoiseParamsException();
}
}
@ -399,7 +408,11 @@ void Noise::resizeNoiseBuf(bool is3d)
if (noisebuf)
delete[] noisebuf;
noisebuf = new float[nlx * nly * nlz];
try {
noisebuf = new float[nlx * nly * nlz];
} catch (std::bad_alloc &e) {
throw InvalidNoiseParamsException();
}
}
@ -615,7 +628,7 @@ float *Noise::perlinMap2DModulated(float x, float y, float *persist_map)
f *= 2.0;
}
delete[] g;
return result;
}