diff options
Diffstat (limited to 'src/core/symbol.c')
| -rw-r--r-- | src/core/symbol.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/core/symbol.c b/src/core/symbol.c index 2343cdb..37a0cae 100644 --- a/src/core/symbol.c +++ b/src/core/symbol.c @@ -42,12 +42,14 @@ symbol_new(SymbolType sym, void *p_val) { p_symbol->sym = sym; p_symbol->p_val = p_val; + p_symbol->i_refs = 1; return p_symbol; } void symbol_delete(Symbol *p_symbol) { + if (--p_symbol->i_refs == 0) { switch (symbol_get_sym(p_symbol)) { case SYM_PROCEDURE: { @@ -58,6 +60,7 @@ symbol_delete(Symbol *p_symbol) { NO_DEFAULT; } free(p_symbol); + } } void |
