Mercurial > lbo > hg > ylisp
changeset 110:dae58f4aa15e
value: Destroy expressions when setting (overwriting) them; implement yvalue_free_all()
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Thu, 29 Aug 2019 22:24:59 +0200 |
parents | 7217a4cb2b97 |
children | 20559e59878f |
files | src/value.c src/value.h |
diffstat | 2 files changed, 13 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/value.c Thu Aug 29 22:24:31 2019 +0200 +++ b/src/value.c Thu Aug 29 22:24:59 2019 +0200 @@ -214,6 +214,7 @@ assert(yvalue_is_valid(id)); yvalue_t* valp = yvalue_get(yref_new_id(id)); assert(valp != NULL); + if (valp->typ == YVALUE_EXPR) yexpr_destroy(&valp->value.expr); *valp = *val; return ref; } @@ -240,3 +241,10 @@ return NULL; } } + +void yvalue_free_all(void) { + for (yvalue_id_t i = 0; i < yvalue_counter - YVALUE_COUNTER_OFFSET; i++) { + yexpr_destroy(YVEC_AT(&yvalue_table, i, yexpr_t)); + } +} +