Index: trunk/src_plugins/io_pads/delay_create.c =================================================================== --- trunk/src_plugins/io_pads/delay_create.c (revision 34586) +++ trunk/src_plugins/io_pads/delay_create.c (revision 34587) @@ -59,6 +59,13 @@ void pcb_dlcr_uninit(pcb_dlcr_t *dlcr) { + long n; + + /* free netnames */ + for(n = 0; n < dlcr->netname_objs.used; n+=2) + free(dlcr->netname_objs.array[n+1]); + vtp0_uninit(&dlcr->netname_objs); + TODO("free everything"); } @@ -585,6 +592,15 @@ } #endif + /* remember obj:netname pairs if requested */ + if (dlcr->save_netname_objs && (obj->netname != NULL)) { + vtp0_append(&dlcr->netname_objs, r); + vtp0_append(&dlcr->netname_objs, obj->netname); + obj->netname = NULL; /* do not free */ + } + + free(obj->netname); + free(obj->name); free(obj->val.obj.layer_name); free(obj); return r; Index: trunk/src_plugins/io_pads/delay_create.h =================================================================== --- trunk/src_plugins/io_pads/delay_create.h (revision 34586) +++ trunk/src_plugins/io_pads/delay_create.h (revision 34587) @@ -110,8 +110,12 @@ pcb_dlcr_draw_t *call_next; /* for CALL next */ pcb_subc_t *last_subc_placed; /* for adding objects in the last subc instead of board */ + /* aux output */ + vtp0_t netname_objs; /* (pcb_any_obj_t *):(char *netname) pairs; filled in only if ->save_netname_objs is 1 */ + /* config */ - unsigned flip_y:1; /* if 1, mirror y coordinates over the X axis */ + unsigned flip_y:1; /* if 1, mirror y coordinates over the X axis */ + unsigned save_netname_objs:1; /* if 1, save each object:netname pair in ->netname_objs */ } pcb_dlcr_t; void pcb_dlcr_init(pcb_dlcr_t *dlcr);