diff options
Diffstat (limited to 'interpret.h')
-rw-r--r-- | interpret.h | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/interpret.h b/interpret.h index 0dc261d6..f239406f 100644 --- a/interpret.h +++ b/interpret.h @@ -753,16 +753,21 @@ mod: * initialized frame locations. */ NODE *var = pc->memory; - lhs = get_lhs(var, false); - /* - * If it's already clear, nothing to do - */ - if (*lhs != Nnull_string) { - unref(*lhs); - *lhs = dupnode(Nnull_string); + if (var->type != Node_var_new) { + NODETYPE prevtype = var->type; + var->type = Node_var_new; + var->flags &= MALLOC; + + /* + * If it's already clear, nothing to do + */ + if (var->var_value != Nnull_string) { + if (prevtype == Node_var) + unref(var->var_value); + var->var_value = dupnode(Nnull_string); + } } - var->type = Node_var_new; } break; |