]> git.mxchange.org Git - simgear.git/commitdiff
Protect against division by zero in QuadTreeBuilder
authorTim Moore <timoore@redhat.com>
Sun, 18 Jan 2009 23:04:59 +0000 (00:04 +0100)
committerTim Moore <timoore@redhat.com>
Sun, 18 Jan 2009 23:04:59 +0000 (00:04 +0100)
This could only happen when there's one leaf in the tree, or all the objects
happen to have the same position. Noticed by Csaba Halaz

simgear/scene/util/QuadTreeBuilder.hxx

index 2c5c4bf558c0599f147cc87571bd24daed809fc5..62734e3b1856e16067f16813023305c80a422bc8 100644 (file)
@@ -80,10 +80,14 @@ public:
     {
         using namespace osg;
         const Vec3 center(_getLocalCoords(obj));
-        int x = (int)(_dimension * (center.x() - _min.x())
+        int x = 0;
+        if (_max.x() != _min.x())
+            x = (int)(_dimension * (center.x() - _min.x())
                       / (_max.x() - _min.x()));
         x = clampTo(x, 0, (_dimension - 1));
-        int y = (int)(_dimension * (center.y() - _min.y())
+        int y = 0;
+        if (_max.y() != _min.y())
+            y = (int)(_dimension * (center.y() - _min.y())
                       / (_max.y() - _min.y()));
         y = clampTo(y, 0, (_dimension -1));
         _addLeafObject(_leaves(y, x), obj);