summaryrefslogtreecommitdiff
path: root/myisam/rt_mbr.c
diff options
context:
space:
mode:
Diffstat (limited to 'myisam/rt_mbr.c')
-rw-r--r--myisam/rt_mbr.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/myisam/rt_mbr.c b/myisam/rt_mbr.c
index 7b556979904..c7fde674729 100644
--- a/myisam/rt_mbr.c
+++ b/myisam/rt_mbr.c
@@ -505,7 +505,7 @@ double rtree_overlapping_area(HA_KEYSEG *keyseg, uchar* a, uchar* b,
amax = korr_func(a+len); \
bmax = korr_func(b+len); \
a_area *= (((double)amax) - ((double)amin)); \
- *ab_area *= ((double)max(amax, bmax) - (double)min(amin, bmin)); \
+ loc_ab_area *= ((double)max(amax, bmax) - (double)min(amin, bmin)); \
}
#define RT_AREA_INC_GET(type, get_func, len)\
@@ -516,7 +516,7 @@ double rtree_overlapping_area(HA_KEYSEG *keyseg, uchar* a, uchar* b,
get_func(amax, a+len); \
get_func(bmax, b+len); \
a_area *= (((double)amax) - ((double)amin)); \
- *ab_area *= ((double)max(amax, bmax) - (double)min(amin, bmin)); \
+ loc_ab_area *= ((double)max(amax, bmax) - (double)min(amin, bmin)); \
}
/*
@@ -526,6 +526,7 @@ double rtree_area_increase(HA_KEYSEG *keyseg, uchar* a, uchar* b,
uint key_length, double *ab_area)
{
double a_area= 1.0;
+ double loc_ab_area= 1.0;
*ab_area= 1.0;
for (; (int)key_length > 0; keyseg += 2)
@@ -575,7 +576,7 @@ double rtree_area_increase(HA_KEYSEG *keyseg, uchar* a, uchar* b,
RT_AREA_INC_GET(double, mi_float8get, 8);
break;
case HA_KEYTYPE_END:
- return *ab_area - a_area;
+ goto safe_end;
default:
return -1;
}
@@ -584,7 +585,9 @@ double rtree_area_increase(HA_KEYSEG *keyseg, uchar* a, uchar* b,
a+= keyseg_length;
b+= keyseg_length;
}
- return *ab_area - a_area;
+safe_end:
+ *ab_area= loc_ab_area;
+ return loc_ab_area - a_area;
}
#define RT_PERIM_INC_KORR(type, korr_func, len) \