Index: altium_parser/pcbdoc_ascii.c =================================================================== --- altium_parser/pcbdoc_ascii.c (revision 35280) +++ altium_parser/pcbdoc_ascii.c (revision 35281) @@ -264,10 +264,25 @@ void altium_tree_free(altium_tree_t *tree) { altium_block_t *blk; + altium_record_t *rec; + int n; for(blk = gdl_first(&tree->blocks); blk != NULL; blk = gdl_first(&tree->blocks)) { gdl_remove(&tree->blocks, blk, link); free(blk); } + + for(n = 0; n < altium_kw_record_SPHASH_MAXVAL+1; n++) { + for(rec = gdl_first(&tree->rec[n]); rec != NULL; rec = gdl_first(&tree->rec[n])) { + altium_field_t *field; + + for(field = gdl_first(&rec->fields); field != NULL; field = gdl_first(&rec->fields)) { + gdl_remove(&rec->fields, field, link); + free(field); + } + gdl_remove(&tree->rec[n], rec, link); + free(rec); + } + } }