Index: trunk/src_plugins/lib_polyhelp/polyhelp.c =================================================================== --- trunk/src_plugins/lib_polyhelp/polyhelp.c (revision 28410) +++ trunk/src_plugins/lib_polyhelp/polyhelp.c (revision 28411) @@ -75,18 +75,28 @@ pcb_cardinal_t pcb_pline_to_lines(pcb_layer_t *dst, const pcb_pline_t *src, pcb_coord_t thickness, pcb_coord_t clearance, pcb_flag_t flags) { - const pcb_vnode_t *v, *n; - pcb_pline_t *track = pcb_pline_dup_offset(src, -((thickness/2)+1)); pcb_cardinal_t cnt = 0; + vtp0_t tracks; + long i; - v = &track->head; - do { - n = v->next; - pcb_line_new(dst, v->point[0], v->point[1], n->point[0], n->point[1], thickness, clearance, flags); - cnt++; + vtp0_init(&tracks); + pcb_pline_dup_offsets(&tracks, src, -((thickness/2)+1)); + + for(i = 0; i < tracks.used; i++) { + const pcb_vnode_t *v, *n; + pcb_pline_t *track = tracks.array[i]; + + v = &track->head; + do { + n = v->next; + pcb_line_new(dst, v->point[0], v->point[1], n->point[0], n->point[1], thickness, clearance, flags); + cnt++; + } + while((v = v->next) != &track->head); + pcb_poly_contour_del(&track); } - while((v = v->next) != &track->head); - pcb_poly_contour_del(&track); + + vtp0_uninit(&tracks); return cnt; }