summaryrefslogtreecommitdiff
path: root/src/core/symbol.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/symbol.c')
-rw-r--r--src/core/symbol.c3
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