version 1.50, 2021/01/01 11:41:01 |
version 1.51, 2021/01/01 16:50:47 |
Line 78 static int initstack_string(tnode_t *); |
|
Line 78 static int initstack_string(tnode_t *); |
|
#endif |
#endif |
|
|
void |
void |
push_member(sb) |
push_member(sbuf_t *sb) |
sbuf_t *sb; |
|
{ |
{ |
namlist_t *nam = xcalloc(1, sizeof (namlist_t)); |
namlist_t *nam = xcalloc(1, sizeof (namlist_t)); |
nam->n_name = sb->sb_name; |
nam->n_name = sb->sb_name; |
DPRINTF(("%s: %s %p\n", __func__, nam->n_name, nam)); |
DPRINTF(("%s: %s %p\n", __func__, nam->n_name, nam)); |
if (namedmem == NULL) { |
if (namedmem == NULL) { |
|
/* |
|
* XXX: Why is this a circular list? |
|
* XXX: Why is this a doubly-linked list? |
|
* A simple stack should suffice. |
|
*/ |
nam->n_prev = nam->n_next = nam; |
nam->n_prev = nam->n_next = nam; |
namedmem = nam; |
namedmem = nam; |
} else { |
} else { |
Line 105 pop_member(void) |
|
Line 109 pop_member(void) |
|
} else { |
} else { |
namlist_t *nam = namedmem; |
namlist_t *nam = namedmem; |
namedmem = namedmem->n_next; |
namedmem = namedmem->n_next; |
namedmem->n_next = nam->n_next; |
namedmem->n_next = nam->n_next; /* FIXME: inner circle */ |
namedmem->n_prev = nam->n_prev; |
namedmem->n_prev = nam->n_prev; |
free(nam); |
free(nam); |
} |
} |