Index: trunk/src/gui_act.c =================================================================== --- trunk/src/gui_act.c (revision 5321) +++ trunk/src/gui_act.c (revision 5322) @@ -841,7 +841,7 @@ pcb_crosshair.AttachedObject.Type = PCB_TYPE_ARC_POINT; pcb_crosshair.AttachedObject.Ptr1 = ptr1; pcb_crosshair.AttachedObject.Ptr2 = ptr2; - pcb_crosshair.AttachedObject.Ptr3 = NULL; + pcb_crosshair.AttachedObject.Ptr3 = pcb_arc_start_ptr; goto switched; } if (close_enough(Note.X, b->X2) && close_enough(Note.Y, b->Y2)) { @@ -848,7 +848,7 @@ pcb_crosshair.AttachedObject.Type = PCB_TYPE_ARC_POINT; pcb_crosshair.AttachedObject.Ptr1 = ptr1; pcb_crosshair.AttachedObject.Ptr2 = ptr2; - pcb_crosshair.AttachedObject.Ptr3 = 0x1; + pcb_crosshair.AttachedObject.Ptr3 = pcb_arc_end_ptr; goto switched; } } Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 5321) +++ trunk/src/obj_arc.c (revision 5322) @@ -45,6 +45,8 @@ #include "draw.h" #include "obj_arc_draw.h" +static int pcb_arc_end_addr = 1; +extern int *pcb_arc_start_ptr = NULL, pcb_arc_end_ptr = &pcb_arc_end_addr; pcb_arc_t *pcb_arc_alloc(pcb_layer_t * layer) { Index: trunk/src/obj_arc.h =================================================================== --- trunk/src/obj_arc.h (revision 5321) +++ trunk/src/obj_arc.h (revision 5322) @@ -76,6 +76,8 @@ pcb_coord_t pcb_arc_length(const pcb_arc_t *arc); pcb_coord_t pcb_arc_area(const pcb_arc_t *arc); +/* ptr3 values for start and end point */ +extern int *pcb_arc_start_ptr, pcb_arc_end_ptr; #define pcb_arc_move(a,dx,dy) \ Index: trunk/src/obj_arc_ui.c =================================================================== --- trunk/src/obj_arc_ui.c (revision 5321) +++ trunk/src/obj_arc_ui.c (revision 5322) @@ -47,7 +47,7 @@ pcb_arc_t *arc = (pcb_arc_t *) pcb_crosshair.AttachedObject.Ptr2; pcb_angle_t start = arc->StartAngle, delta = arc->Delta; - if (end_pt == NULL) { + if (end_pt == pcb_arc_start_ptr) { double end2, new_delta, new_start = atan2(-(ch->Y - arc->Y), (ch->X - arc->X)) * 180.0 / M_PI + 180.0; end2 = start + delta; Index: trunk/src/search.c =================================================================== --- trunk/src/search.c (revision 5321) +++ trunk/src/search.c (revision 5322) @@ -401,7 +401,7 @@ if (d < i->least) { i->least = d; *i->Arc = arc; - *i->arc_pt = 0; + *i->arc_pt = pcb_arc_start_ptr; ret_val = PCB_R_DIR_FOUND_CONTINUE; } @@ -409,7 +409,7 @@ if (d < i->least) { i->least = d; *i->Arc = arc; - *i->arc_pt = 1; + *i->arc_pt = pcb_arc_end_ptr; ret_val = PCB_R_DIR_FOUND_CONTINUE; } return ret_val;