Index: src_plugins/rbs_routing/rbs_routing.c =================================================================== --- src_plugins/rbs_routing/rbs_routing.c (revision 38773) +++ src_plugins/rbs_routing/rbs_routing.c (revision 38774) @@ -72,10 +72,9 @@ if (type == PCB_OBJ_LINE) { pcb_line_t *l = ptr2; - tx = x - RND_MM_TO_COORD(5); - ty = y; rbsr_stretch_line_begin(&rbss, pcb, l); - rbsr_stretch_line_to_coords(&rbss, tx, ty); + rbsr_stretch_line_to_coords(&rbss, x - RND_MM_TO_COORD(1), y); + rnd_gui->invalidate_all(rnd_gui); rbsr_stretch_line_end(&rbss); } else { Index: src_plugins/rbs_routing/stretch.c =================================================================== --- src_plugins/rbs_routing/stretch.c (revision 38773) +++ src_plugins/rbs_routing/stretch.c (revision 38774) @@ -14,6 +14,14 @@ return -1; } + rbss->from.type = ADDR_ARC_END; + rbss->from.obj.arc = gl->a1; + rbss->from.last_real = NULL; + + rbss->to.type = ADDR_ARC_START; + rbss->to.obj.arc = gl->a2; + rbss->to.last_real = NULL; + htpp_pop(&rbss->map.robj2grbs, line); grbs_path_remove_line(&rbss->map.grbs, gl); @@ -26,9 +34,18 @@ void rbsr_stretch_line_end(rbsr_stretch_t *rbss) { TODO("implement me"); + /* No need to free rbss->via separately: it's part of the grbs map */ } int rbsr_stretch_line_to_coords(rbsr_stretch_t *rbss, rnd_coord_t tx, rnd_coord_t ty) { + if (rbss->via != NULL) { + grbs_point_unreg(&rbss->map.grbs, rbss->via); + rbss->via->x = RBSR_R2G(tx); + rbss->via->y = RBSR_R2G(ty); + grbs_point_reg(&rbss->map.grbs, rbss->via); + } + else + rbss->via = grbs_point_new(&rbss->map.grbs, RBSR_R2G(tx), RBSR_R2G(ty), RBSR_R2G(RND_MM_TO_COORD(0.1)), RBSR_R2G(RND_MM_TO_COORD(0.1))); } Index: src_plugins/rbs_routing/stretch.h =================================================================== --- src_plugins/rbs_routing/stretch.h (revision 38773) +++ src_plugins/rbs_routing/stretch.h (revision 38774) @@ -1,6 +1,6 @@ typedef struct rbsr_stretch_s { rbsr_map_t map; - grbs_addr_t *from, *to; + grbs_addr_t from, to; grbs_point_t *via; } rbsr_stretch_t;