From: ken Date: Fri, 20 Jan 2017 17:17:32 +0000 (-0800) Subject: removed set parent, crawl_set relies on internal rewind stack X-Git-Url: https://www.kengrimes.com/gitweb/?p=henge%2Fapc.git;a=commitdiff_plain;h=72b4785c5b92263d4939ab635cb8bf2686e7c4b4 removed set parent, crawl_set relies on internal rewind stack --- diff --git a/src/ir.c b/src/ir.c index ab97305..341028e 100644 --- a/src/ir.c +++ b/src/ir.c @@ -101,7 +101,7 @@ struct ir_class_t uint8_t* name; }; struct ir_set_t -{ struct ir_set_t* nextchild, * nextsib, * p; +{ struct ir_set_t* nextchild, * nextsib; uint32_t ref; uint8_t* name; struct ir_framebox_t* frameboxes; @@ -696,21 +696,19 @@ void crawl_set ( struct ir_set_t* set, int depth ) -{ struct ir_set_t* iter, * last; +{ struct ir_set_t* setlist[64], ** slp, * iter; int i; pspace(depth * 12); - last = NULL; i = depth; + slp = setlist; for(iter = set; iter != NULL; iter = iter->nextchild) { uprintf("[%10U]", iter->name); - if (last != NULL) - iter->p = last; - last = iter; + *slp++ = iter; i++; } --i; putchar('\n'); - for(iter = last; iter != NULL; iter = iter->p, --i) + for(iter = *--slp; slp >= setlist; iter = *--slp, --i) if (iter->nextsib != NULL) crawl_set(iter->nextsib,i); }