Index: eagle_bin/test_parser/egb_tree.c =================================================================== --- eagle_bin/test_parser/egb_tree.c (revision 9539) +++ eagle_bin/test_parser/egb_tree.c (revision 9540) @@ -3,6 +3,7 @@ #include "egb_tree.h" #warning remove this on integration +extern char *strdup(const char *s); #define pcb_strdup(s) strdup(s) egb_node_t *egb_node_alloc(int id, const char *id_name) @@ -44,3 +45,21 @@ return htss_get(&node->props, key); } +void egb_node_free(egb_node_t *node) +{ + egb_node_t *n; + + for(n = node->first_child; n != NULL; n = n->next) + egb_node_free(n); + + if (node->props.table != NULL) { + htss_entry_t *e; + for (e = htss_first(&node->props); e; e = htss_next(&node->props, e)) { + free(e->key); + free(e->value); + } + htss_uninit(&node->props); + } + free(node); +} + Index: eagle_bin/test_parser/egb_tree.h =================================================================== --- eagle_bin/test_parser/egb_tree.h (revision 9539) +++ eagle_bin/test_parser/egb_tree.h (revision 9540) @@ -16,6 +16,7 @@ egb_node_t *egb_node_alloc(int id, const char *id_name); egb_node_t *egb_node_append(egb_node_t *parent, egb_node_t *node); +void egb_node_free(egb_node_t *node); void egb_node_prop_set(egb_node_t *node, const char *key, const char *val); char *egb_node_prop_get(egb_node_t *node, const char *key);