Index: find_geo.c =================================================================== --- find_geo.c (revision 29871) +++ find_geo.c (revision 29872) @@ -843,25 +843,16 @@ case PCB_PSSH_HSHADOW: /* if the line reaches the plated hole or slot, there's connection */ { - pcb_any_line_t tmp; + pcb_pstk_shape_t *slshape, sltmp; pcb_pstk_proto_t *proto = pcb_pstk_get_proto(ps); - pcb_pstk_shape_t *slot; if (!proto->hplated) return 0; - tmp.Point1.X = line->Point1.X; - tmp.Point1.Y = line->Point1.Y; - tmp.Point2.X = line->Point2.X; - tmp.Point2.Y = line->Point2.Y; - tmp.Thickness = line->Thickness; - tmp.Flags = pcb_no_flags(); - if (proto->hdia != 0) - return pcb_is_point_in_line(shape->data.circ.x + ps->x, shape->data.circ.y + ps->y, proto->hdia/2 + Bloat, &tmp); - slot = pcb_pstk_shape_mech_at(PCB, ps, line->parent.layer); - if (slot != 0) - return pcb_isc_pstk_line_shp(ps, line, slot); + slshape = pcb_pstk_shape_mech_or_hole_at(PCB, ps, line->parent.layer, &sltmp); + if (slshape == NULL) + return pcb_false; + return pcb_isc_pstk_line_shp(ps, line, slshape); } - break; } return pcb_false; } @@ -920,15 +911,15 @@ case PCB_PSSH_HSHADOW: /* if the arc reaches the plated hole or slot, there's connection */ { + pcb_pstk_shape_t *slshape, sltmp; pcb_pstk_proto_t *proto = pcb_pstk_get_proto(ps); - pcb_pstk_shape_t *slot; if (!proto->hplated) return 0; - if (proto->hdia != 0) - return pcb_is_point_on_arc(shape->data.circ.x + ps->x, shape->data.circ.y + ps->y, proto->hdia/2, arc); - slot = pcb_pstk_shape_mech_at(PCB, ps, arc->parent.layer); - if (slot != 0) - return pcb_isc_pstk_line_shp(ps, arc, slot); + + slshape = pcb_pstk_shape_mech_or_hole_at(PCB, ps, arc->parent.layer, &sltmp); + if (slshape == NULL) + return pcb_false; + return pcb_isc_pstk_arc_shp(ps, arc, slshape); } } return pcb_false;