id,summary,reporter,owner,description,type,status,milestone,component,version,severity,resolution,keywords,cc 10976,Problem with polygon library versions 1.56 and 1.57,Uwe Keller ,Andrii Sydorchuk,"It seems that the problem is due to the change of polygon of boost version 1.56. The function is question is insert_vertex_sequence in polygon_set_data.hpp In the modified function in version 1.56 the check if the data submitted to the function refer to a hole is missing, as well as the corresponding inversion of the multiplier. Since the attribute is_hole is still present in the argument list of the function I presume that the check was lost. Insertion of this check produces the expected results. --- snip -------------------------------------------------------------- template inline void insert_vertex_sequence(iT begin_vertex, iT end_vertex, direction_1d winding, bool is_hole) { if (begin_vertex == end_vertex) { // No edges to insert. return; } // Current edge endpoints. iT vertex0 = begin_vertex; iT vertex1 = begin_vertex; if (++vertex1 == end_vertex) { // No edges to insert. return; } int wmultiplier = (winding == COUNTERCLOCKWISE) ? 1 : -1; if(is_hole) wmultiplier *= -1; // <-------------------------patch with respect to 1.55 dirty_ = true; unsorted_ = true; while (vertex0 != end_vertex) { point_type p0, p1; assign(p0, *vertex0); assign(p1, *vertex1); if (p0 != p1) { int hmultiplier = (p0.get(HORIZONTAL) == p1.get(HORIZONTAL)) ? -1 : 1; element_type elem(edge_type(p0, p1), hmultiplier * wmultiplier); insert_clean(elem); } ++vertex0; ++vertex1; if (vertex1 == end_vertex) { vertex1 = begin_vertex; } } } --- snap -------------------------------------------------------------- ",Bugs,closed,Boost 1.58.0,polygon,Boost 1.56.0,Problem,fixed,,Uwe.Keller@… bjornpiltz@…