summaryrefslogtreecommitdiff
path: root/sql/gcalc_tools.h
diff options
context:
space:
mode:
authorAlexey Botchkov <holyfoot@askmonty.org>2011-07-13 14:57:27 +0500
committerAlexey Botchkov <holyfoot@askmonty.org>2011-07-13 14:57:27 +0500
commit90c4df7a4af542707d884e53990827672bb8feea (patch)
treefcf24b0b49e8dc8e69bf17a6c3937347bf40cb9d /sql/gcalc_tools.h
parente7c9f52fd960440614c30c3f852bf74f1febe6b3 (diff)
downloadmariadb-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.h5
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);