Skip to content

Commit 683b5d1

Browse files
committed
fix divide_geom_box_tree if all dimensions are empty
1 parent 3079f80 commit 683b5d1

1 file changed

Lines changed: 6 additions & 6 deletions

File tree

utils/geom.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1610,7 +1610,7 @@ static void divide_geom_box_tree(geom_box_tree t)
16101610
{
16111611
int division_nobjects[3][2] = {{0,0},{0,0},{0,0}};
16121612
number division_point[3];
1613-
int best = 0;
1613+
int best = -1;
16141614
int i, j, n1, n2;
16151615

16161616
if (!t)
@@ -1632,17 +1632,17 @@ static void divide_geom_box_tree(geom_box_tree t)
16321632
find_best_partition(t->nobjects, t->objects, i, &division_point[i],
16331633
&division_nobjects[i][0],
16341634
&division_nobjects[i][1]);
1635-
if (MAX(division_nobjects[i][0], division_nobjects[i][1]) <
1635+
if (best < 0 ||
1636+
MAX(division_nobjects[i][0], division_nobjects[i][1]) <
16361637
MAX(division_nobjects[best][0], division_nobjects[best][1]))
16371638
best = i;
16381639
}
16391640

16401641
/* don't do anything if division makes the worst case worse or if
16411642
it fails to improve the best case: */
1642-
if (MAX(division_nobjects[best][0], division_nobjects[best][1]) + 1 >
1643-
t->nobjects ||
1644-
MIN(division_nobjects[best][0], division_nobjects[best][1]) + 1 >=
1645-
t->nobjects)
1643+
if (best < 0 ||
1644+
MAX(division_nobjects[best][0], division_nobjects[best][1]) + 1 > t->nobjects ||
1645+
MIN(division_nobjects[best][0], division_nobjects[best][1]) + 1 >= t->nobjects)
16461646
return; /* division didn't help us */
16471647

16481648
divide_geom_box(&t->b, best, division_point[best], &t->b1, &t->b2);

0 commit comments

Comments
 (0)