Mapgen: Don't spread light of nodes outside the desired area
authorkwolekr <kwolekr@minetest.net>
Wed, 30 Mar 2016 03:59:39 +0000 (23:59 -0400)
committerkwolekr <kwolekr@minetest.net>
Wed, 30 Mar 2016 04:19:03 +0000 (00:19 -0400)
This fixes #3935, a regression from 0338c2e.
An 'optimization' was performed where an index for the VoxelManip being
operated on was mistakenly used for bounds checking within the incorrect
VoxelArea, namely, the area wherein light should be spread.

src/mapgen.cpp

index 29af835178a5016813f6d0e694e9e7b449b269aa..b3c9380a04a41c426ca639b603e61ec3e2ce53ca 100644 (file)
@@ -242,13 +242,10 @@ void Mapgen::setLighting(u8 light, v3s16 nmin, v3s16 nmax)
 
 void Mapgen::lightSpread(VoxelArea &a, v3s16 p, u8 light)
 {
-       if (light <= 1)
+       if (light <= 1 || !a.contains(p))
                return;
 
        u32 vi = vm->m_area.index(p);
-       if (!a.contains(vi))
-               return;
-
        MapNode &n = vm->m_data[vi];
 
        // Decay light in each of the banks separately