Index: work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c =================================================================== --- work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c (revision 9380) +++ work/alien_formats/eagle/eagle_bin/test_parser/eagle_bin.c (revision 9381) @@ -964,8 +964,8 @@ for(ss = sc->subs; ss->offs != 0; ss++) { unsigned long int n, numch = load_ulong(block, ss->offs, ss->len); - if (ss->ss_type == SS_DIRECT) { + long lp = 0; printf("%s #About to parse %ld direct sub-blocks {\n", ind, numch); for(n = 0; n < numch && *numblocks > 0; n++) { int res = read_block(numblocks, level+1, ctx, f, fn); @@ -972,10 +972,12 @@ if (res < 0) return res; processed += res; + lp += res; } + printf("%s # fin, processed=%d lp=%ld }\n", ind, processed, lp); } else { - long rem = numch; + long rem = numch, lp = 0; printf("%s #About to parse %ld recursive sub-blocks {\n", ind, numch); for(n = 0; n < numch && rem > 0; n++) { int res = read_block(&rem, level+1, ctx, f, fn); @@ -983,11 +985,13 @@ return res; *numblocks -= res; processed += res; + lp += res; } + printf("%s # fin, processed=%d lp=%ld }\n", ind, processed, lp); } } - printf("%s #blocks remaining at end of read_block routine = %ld (processed=%d) }\n", ind, *numblocks, processed); + printf("%s (blocks remaining at end of read_block routine = %ld (processed=%d))\n", ind, *numblocks, processed); return processed; }