Преглед на файлове

Fix stack overflow in Perlin noise generator.

legacy
Sam Hocevar преди 6 години
родител
ревизия
54b32b19d1
променени са 1 файла, в които са добавени 5 реда и са изтрити 1 реда
  1. +5
    -1
      src/lol/math/noise/perlin.h

+ 5
- 1
src/lol/math/noise/perlin.h Целия файл

@@ -65,11 +65,15 @@ public:

/* Compute all gradient contributions, for each of the 2^N corners
* of the hypercube. */
for (int i = 0; i < (1 << N); ++i)
for (int i = 0; ; ++i)
{
/* Accumulate Perlin noise */
ret += multiplier * dot(delta, this->get_gradient(origin));

/* Avoid buffer overflow below in origin[bit] */
if (i + 1 == (1 << N))
break;

/* Don’t use the binary pattern for “i” but use its Gray code
* “j” instead, so we know we only have one component to alter
* in “origin” and in “delta”. We know which bit was flipped by


Зареждане…
Отказ
Запис