diff options
Diffstat (limited to 'sql/spatial.cc')
-rw-r--r-- | sql/spatial.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/sql/spatial.cc b/sql/spatial.cc index 9f672801c9f..9c4fe168fe3 100644 --- a/sql/spatial.cc +++ b/sql/spatial.cc @@ -15,8 +15,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <my_global.h> #include "sql_priv.h" -#include "my_global.h" // REQUIRED for HAVE_* below #include "spatial.h" #include "gstream.h" // Gis_read_stream #include "sql_string.h" // String @@ -1236,11 +1236,15 @@ int Gis_polygon::store_shapes(Gcalc_shape_transporter *trn) const trn->start_ring(); get_point(&first_x, &first_y, data); data+= POINT_DATA_SIZE; - n_points--; + prev_x= first_x; prev_y= first_y; if (trn->add_point(first_x, first_y)) return 1; + + if (--n_points == 0) + goto single_point_ring; + while (--n_points) { double x, y; @@ -1265,6 +1269,8 @@ int Gis_polygon::store_shapes(Gcalc_shape_transporter *trn) const return 1; } data+= POINT_DATA_SIZE; + +single_point_ring: trn->complete_ring(); } |