diff options
author | Aleksey Veresov <aleksey@veresov.pro> | 2021-03-28 12:35:51 +0300 |
---|---|---|
committer | Aleksey Veresov <aleksey@veresov.pro> | 2021-03-28 12:35:51 +0300 |
commit | 4a922de4ceae013eb2845ab4ac890f00fe7e0e23 (patch) | |
tree | cabfaa1557bdd90239ebef931b22ef9ab795b19a /src | |
parent | 36d8dff3ae5bf315fe3b13555e6efdc08932c128 (diff) | |
download | csx-4a922de4ceae013eb2845ab4ac890f00fe7e0e23.tar csx-4a922de4ceae013eb2845ab4ac890f00fe7e0e23.tar.xz csx-4a922de4ceae013eb2845ab4ac890f00fe7e0e23.zip |
fix
Diffstat (limited to 'src')
-rw-r--r-- | src/csx.c | 38 |
1 files changed, 38 insertions, 0 deletions
@@ -112,10 +112,48 @@ static void sweep(csxi *csx) free(old); } +static void mark_basenames(csxi *csx) +{ + csxbasenames *n = &csx->basenames; + csx_obj(n->name)->mark = 1; + csx_obj(n->pair)->mark = 1; + csx_obj(n->str)->mark = 1; + csx_obj(n->_int)->mark = 1; + csx_obj(n->base)->mark = 1; + csx_obj(n->fn)->mark = 1; + csx_obj(n->sx)->mark = 1; + csx_obj(n->set)->mark = 1; + csx_obj(n->_isset)->mark = 1; + csx_obj(n->sethead)->mark = 1; + csx_obj(n->settail)->mark = 1; + csx_obj(n->head)->mark = 1; + csx_obj(n->tail)->mark = 1; + csx_obj(n->qt)->mark = 1; + csx_obj(n->same)->mark = 1; + csx_obj(n->type)->mark = 1; + csx_obj(n->_do)->mark = 1; + csx_obj(n->_if)->mark = 1; + csx_obj(n->_plus)->mark = 1; + csx_obj(n->_star)->mark = 1; + csx_obj(n->neg)->mark = 1; + csx_obj(n->div)->mark = 1; + csx_obj(n->mod)->mark = 1; + csx_obj(n->_less)->mark = 1; + csx_obj(n->_more)->mark = 1; + csx_obj(n->out)->mark = 1; + csx_obj(n->in)->mark = 1; + csx_obj(n->len)->mark = 1; + csx_obj(n->run)->mark = 1; + csx_obj(n->context)->mark = 1; + csx_obj(n->newcontext)->mark = 1; + csx_obj(n->_exit)->mark = 1; +} + static void gc(csxi *csx) { int i; if (csx->objslen < csx->lastlen * 2) return; + mark_basenames(csx); csx_obj(csx->null)->mark = 1; csx_obj(csx->one)->mark = 1; deepmark(csx, csx->context); |