Index: trunk/src/board.c =================================================================== --- trunk/src/board.c (revision 20156) +++ trunk/src/board.c (revision 20157) @@ -56,7 +56,6 @@ free(pcb->PrintFilename); pcb_ratspatch_destroy(pcb); pcb_data_free(pcb->Data); - free(pcb->Data); /* release font symbols */ pcb_fontkit_free(&pcb->fontkit); Index: trunk/src/buffer.c =================================================================== --- trunk/src/buffer.c (revision 20156) +++ trunk/src/buffer.c (revision 20157) @@ -110,7 +110,8 @@ void *old_parent = Buffer->Data->parent.any; pcb_parenttype_t old_pt = Buffer->Data->parent_type; - pcb_data_free(Buffer->Data); + pcb_data_uninit(Buffer->Data); + pcb_data_init(Buffer->Data); Buffer->Data->parent.any = old_parent; Buffer->Data->parent_type = old_pt; Index: trunk/src/data.c =================================================================== --- trunk/src/data.c (revision 20156) +++ trunk/src/data.c (revision 20157) @@ -192,6 +192,7 @@ return; pcb_data_uninit(data); + free(data); } pcb_bool pcb_data_is_empty(pcb_data_t *Data) Index: trunk/src/data.h =================================================================== --- trunk/src/data.h (revision 20156) +++ trunk/src/data.h (revision 20157) @@ -126,8 +126,8 @@ /* Uninitialize and free the fields of data (doesn't free data) */ void pcb_data_uninit(pcb_data_t *data); -/* Calls pcb_data_uninit() and */ -void pcb_data_free(pcb_data_t *); +/* Calls pcb_data_uninit() and free data */ +void pcb_data_free(pcb_data_t *data); pcb_bool pcb_data_is_empty(pcb_data_t *); Index: trunk/src/obj_subc.c =================================================================== --- trunk/src/obj_subc.c (revision 20156) +++ trunk/src/obj_subc.c (revision 20157) @@ -106,7 +106,6 @@ pcb_term_uninit(&sc->terminals); pcb_subclist_remove(sc); pcb_data_free(sc->data); - free(sc->data); free(sc); } @@ -1328,8 +1327,8 @@ } subc_relocate_globals(NULL, NULL, subc, 0); - - pcb_data_free(buff->Data); +#warning TODO: this should be pcb_data_free() + pcb_data_uninit(buff->Data); buff->Data = subc->data; buff->Data->parent_type = PCB_PARENT_INVALID; buff->Data->parent.data = NULL;