diff options
Diffstat (limited to 'sql/spatial.cc')
-rw-r--r-- | sql/spatial.cc | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/sql/spatial.cc b/sql/spatial.cc index 6e1da589527..9114c81514d 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -54,8 +54,11 @@ static Geometry::Class_info **ci_collection_end= Geometry::Class_info::Class_info(const char *name, int type_id, void(*create_func)(void *)): - m_name(name, (uint) strlen(name)), m_type_id(type_id), m_create_func(create_func) + m_type_id(type_id), m_create_func(create_func) { + m_name.str= (char *) name; + m_name.length= strlen(name); + ci_collection[type_id]= this; } @@ -847,7 +850,6 @@ int Gis_polygon::area(double *ar, const char **end_of_data) const double x, y; get_point(&x, &y, data); data+= (SIZEOF_STORED_DOUBLE*2); - /* QQ: Is the following prev_x+x right ? */ lr_area+= (prev_x + x)* (prev_y - y); prev_x= x; prev_y= y; @@ -945,6 +947,8 @@ int Gis_polygon::centroid_xy(double *x, double *y) const n_linear_rings= uint4korr(data); data+= 4; + DBUG_ASSERT(n_linear_rings > 0); + while (n_linear_rings--) { uint32 n_points, org_n_points; |