diff options
author | Alexey Botchkov <holyfoot@askmonty.org> | 2013-03-19 17:16:10 +0400 |
---|---|---|
committer | Alexey Botchkov <holyfoot@askmonty.org> | 2013-03-19 17:16:10 +0400 |
commit | 15a7335d77d056e860a9fdc844343c840e310e68 (patch) | |
tree | 7d74d47ba9109a7a33d61a7c3a232a97c016252e | |
parent | 2cd7cf8fe6fa41fca124c9239468fc22f8df9957 (diff) | |
download | mariadb-git-15a7335d77d056e860a9fdc844343c840e310e68.tar.gz |
MDEV-4296 Assertion `n_linear_rings > 0' fails in Gis_polygon::centroid_xy.
Forgotten DBUG_ASSERT should be replaced with the 'return error'.
-rw-r--r-- | mysql-test/r/gis.result | 6 | ||||
-rw-r--r-- | mysql-test/t/gis.test | 5 | ||||
-rw-r--r-- | sql/spatial.cc | 6 |
3 files changed, 13 insertions, 4 deletions
diff --git a/mysql-test/r/gis.result b/mysql-test/r/gis.result index 7566f0beb8c..6ea977d5bfd 100644 --- a/mysql-test/r/gis.result +++ b/mysql-test/r/gis.result @@ -1102,4 +1102,10 @@ NULL select geometryn(0x0100000000070000000100000001030000000200000000000000ffffff0f, 1); geometryn(0x0100000000070000000100000001030000000200000000000000ffffff0f, 1) NULL +# +# MDEV-4296 Assertion `n_linear_rings > 0' fails in Gis_polygon::centroid_xy +# +SELECT Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) ))); +Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) ))) +NULL End of 5.1 tests diff --git a/mysql-test/t/gis.test b/mysql-test/t/gis.test index c42541e82b8..b8cce077e3e 100644 --- a/mysql-test/t/gis.test +++ b/mysql-test/t/gis.test @@ -834,4 +834,9 @@ select envelope(0x0100000000030000000100000000000010); select geometryn(0x0100000000070000000100000001030000000200000000000000ffff0000, 1); select geometryn(0x0100000000070000000100000001030000000200000000000000ffffff0f, 1); +--echo # +--echo # MDEV-4296 Assertion `n_linear_rings > 0' fails in Gis_polygon::centroid_xy +--echo # + +SELECT Centroid( AsBinary( LineString(Point(0,0), Point(0,0), Point(0,0) ))); --echo End of 5.1 tests diff --git a/sql/spatial.cc b/sql/spatial.cc index 5a4b768140c..afaa67763e8 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -972,13 +972,11 @@ int Gis_polygon::centroid_xy(double *x, double *y) const const char *data= m_data; bool first_loop= 1; - if (no_data(data, 4)) + if (no_data(data, 4) || + (n_linear_rings= uint4korr(data)) == 0) return 1; - n_linear_rings= uint4korr(data); data+= 4; - DBUG_ASSERT(n_linear_rings > 0); - while (n_linear_rings--) { uint32 n_points, org_n_points; |