Index: eagle/eagle_bin/test_parser/eagle_bin.c =================================================================== --- eagle/eagle_bin/test_parser/eagle_bin.c (revision 9558) +++ eagle/eagle_bin/test_parser/eagle_bin.c (revision 9559) @@ -2102,6 +2102,7 @@ const fmatch_t *fm; char ind[256]; int processed = 0; + egb_node_t *lpar; memset(ind, ' ', level); ind[level] = '\0'; @@ -2185,8 +2186,12 @@ if (ss->ss_type == SS_DIRECT) { long lp = 0; printf("%s #About to parse %ld direct sub-blocks for %s {\n", ind, numch, ss->tree_name); + if (ss->tree_name != NULL) + lpar = egb_node_append(parent, egb_node_alloc(0, ss->tree_name)); + else + lpar = parent; for(n = 0; n < numch && *numblocks > 0; n++) { - int res = read_block(numblocks, level+1, ctx, f, fn, parent); + int res = read_block(numblocks, level+1, ctx, f, fn, lpar); if (res < 0) return res; processed += res; @@ -2197,11 +2202,15 @@ else { long rem, lp = 0; printf("%s #About to parse %ld recursive sub-blocks for %s {\n", ind, numch, ss->tree_name); + if (ss->tree_name != NULL) + lpar = egb_node_append(parent, egb_node_alloc(0, ss->tree_name)); + else + lpar = parent; if (ss->ss_type == SS_RECURSIVE_MINUS_1) numch--; rem = numch; for(n = 0; n < numch && rem > 0; n++) { - int res = read_block(&rem, level+1, ctx, f, fn, parent); + int res = read_block(&rem, level+1, ctx, f, fn, lpar); if (res < 0) return res; *numblocks -= res;