From a4cc3e44e0fcf15159c68f7af45e8decd0c30ba4 Mon Sep 17 00:00:00 2001 From: Peter Mikkelsen Date: Mon, 24 Jan 2022 21:24:19 +0000 Subject: Make sure variables are as local as they need to be --- eval.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'eval.c') diff --git a/eval.c b/eval.c index a2d4d43..2e9a78e 100644 --- a/eval.c +++ b/eval.c @@ -229,6 +229,9 @@ assign(Datum left, Datum right) if(left.symbol->setfn != nil) left.symbol->setfn(right); else{ + /* re-assign the symbol to one that is sure to be local. This enables shadowing */ + left.symbol = getsym(left.symbol->name, 1); + if(left.symbol->undefined == 0 && left.symbol->value.tag == ArrayTag) freearray(left.symbol->value.array); left.symbol->value = right; -- cgit v1.2.3