Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 30050) +++ trunk/src/obj_pstk.c (revision 30051) @@ -1268,7 +1268,7 @@ prt->hdia = pcb_round((double)prt->hdia * ((sx+sy)/2.0)); pcb_pstk_proto_update(prt); - ps->proto = pcb_pstk_proto_insert_or_free(ps->parent.data, prt, 1); + ps->proto = pcb_pstk_proto_insert_or_free(ps->parent.data, prt, 1, undoable); if (sx != 1.0) ps->x = pcb_round((double)ps->x * sx); Index: trunk/src/obj_pstk.h =================================================================== --- trunk/src/obj_pstk.h (revision 30050) +++ trunk/src/obj_pstk.h (revision 30051) @@ -249,7 +249,7 @@ /* Insert a proto in data and return the proto-id. If the proto is already in data, the fields of the caller's version are free'd, else they are copied into data. In any case, the caller should not free proto. */ -pcb_cardinal_t pcb_pstk_proto_insert_or_free(pcb_data_t *data, pcb_pstk_proto_t *proto, int quiet); +pcb_cardinal_t pcb_pstk_proto_insert_or_free(pcb_data_t *data, pcb_pstk_proto_t *proto, int quiet, int undoable); /* Update caches and hash - must be called after any change to the prototype */ void pcb_pstk_proto_update(pcb_pstk_proto_t *dst); Index: trunk/src/obj_pstk_proto.c =================================================================== --- trunk/src/obj_pstk_proto.c (revision 30050) +++ trunk/src/obj_pstk_proto.c (revision 30051) @@ -723,10 +723,9 @@ -pcb_cardinal_t pcb_pstk_proto_insert_or_free(pcb_data_t *data, pcb_pstk_proto_t *proto, int quiet) +pcb_cardinal_t pcb_pstk_proto_insert_or_free(pcb_data_t *data, pcb_pstk_proto_t *proto, int quiet, int undoable) { pcb_cardinal_t id, n, first_free; - int undoable = 1; n = pcb_pstk_proto_insert_try(data, proto, &first_free); if (n != PCB_PADSTACK_INVALID) { @@ -834,7 +833,7 @@ if (pcb_pstk_proto_conv_selection(pcb, &proto, quiet, ox, oy) != 0) return -1; - return pcb_pstk_proto_insert_or_free(pcb->Data, &proto, quiet); + return pcb_pstk_proto_insert_or_free(pcb->Data, &proto, quiet, 1); } pcb_cardinal_t pcb_pstk_conv_buffer(int quiet) @@ -844,7 +843,7 @@ if (pcb_pstk_proto_conv_buffer(&proto, quiet) != 0) return -1; - return pcb_pstk_proto_insert_or_free(PCB_PASTEBUFFER->Data, &proto, quiet); + return pcb_pstk_proto_insert_or_free(PCB_PASTEBUFFER->Data, &proto, quiet, 0); } Index: trunk/src_plugins/io_kicad/read.c =================================================================== --- trunk/src_plugins/io_kicad/read.c (revision 30050) +++ trunk/src_plugins/io_kicad/read.c (revision 30051) @@ -1400,7 +1400,7 @@ new_proto->htop = MIN(ot1, ot2); new_proto->hbottom = MIN(ob1, ob2); - new_pid = pcb_pstk_proto_insert_or_free(st->pcb->Data, new_proto, 0); + new_pid = pcb_pstk_proto_insert_or_free(st->pcb->Data, new_proto, 0, 0); ps->proto = new_pid; pcb_pstk_post(ps); } Index: trunk/src_plugins/lib_compat_help/pstk_help.c =================================================================== --- trunk/src_plugins/lib_compat_help/pstk_help.c (revision 30050) +++ trunk/src_plugins/lib_compat_help/pstk_help.c (revision 30051) @@ -92,7 +92,7 @@ pcb_cardinal_t pid; if (plated != -1) proto.hplated = plated; - pid = pcb_pstk_proto_insert_or_free(data, &proto, quiet); + pid = pcb_pstk_proto_insert_or_free(data, &proto, quiet, 0); if (pid != PCB_PADSTACK_INVALID) { pcb_pstk_t *ps = pcb_pstk_new(data, -1, pid, 0, 0, 0, pcb_flag_make(PCB_FLAG_CLEARLINE | PCB_FLAG_FOUND)); vtp0_append(objs, ps);