diff options
author | Alexey Botchkov <holyfoot@askmonty.org> | 2011-07-13 14:57:27 +0500 |
---|---|---|
committer | Alexey Botchkov <holyfoot@askmonty.org> | 2011-07-13 14:57:27 +0500 |
commit | 90c4df7a4af542707d884e53990827672bb8feea (patch) | |
tree | fcf24b0b49e8dc8e69bf17a6c3937347bf40cb9d /sql/gcalc_tools.h | |
parent | e7c9f52fd960440614c30c3f852bf74f1febe6b3 (diff) | |
download | mariadb-git-90c4df7a4af542707d884e53990827672bb8feea.tar.gz |
Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
Second smaller hole in the polygon got link to the bigger one as it's the
outer ring. Fixed by specifying the outer ring explicitly.
per-file comments:
mysql-test/r/gis-precise.result
Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
test result updated.
mysql-test/t/gis-precise.test
Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
test case added.
sql/gcalc_tools.cc
Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
specify the outer ring explicitly in the get_polygon_result parameter.
sql/gcalc_tools.h
Fix for bug #804266 Memory corruption/valgrind warning/crash in move_hole() with ST_UNION.
add the outer ring as a parameter to the get_polygon_result.
Diffstat (limited to 'sql/gcalc_tools.h')
-rw-r--r-- | sql/gcalc_tools.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sql/gcalc_tools.h b/sql/gcalc_tools.h index 32835d68666..5e55d1bdae3 100644 --- a/sql/gcalc_tools.h +++ b/sql/gcalc_tools.h @@ -304,8 +304,9 @@ private: int get_single_result(res_point *res, Gcalc_result_receiver *storage); int get_result_thread(res_point *cur, Gcalc_result_receiver *storage, - int move_upward); - int get_polygon_result(res_point *cur, Gcalc_result_receiver *storage); + int move_upward, res_point *first_poly_node); + int get_polygon_result(res_point *cur, Gcalc_result_receiver *storage, + res_point *first_poly_node); int get_line_result(res_point *cur, Gcalc_result_receiver *storage); void free_result(res_point *res); |