From f6894148a0274b993b8d793930d9a6c8402249ba Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 4 Aug 2021 14:19:40 -0600 Subject: [PATCH] clone the macro evaluation interpreter between stack frames --- src/kiss/Helpers.hx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/kiss/Helpers.hx b/src/kiss/Helpers.hx index d831786..0c0de7b 100644 --- a/src/kiss/Helpers.hx +++ b/src/kiss/Helpers.hx @@ -11,6 +11,7 @@ import kiss.CompileError; import kiss.Kiss; import kiss.SpecialForms; import kiss.Prelude; +import kiss.cloner.Cloner; import uuid.Uuid; import sys.io.Process; @@ -332,12 +333,10 @@ class Helpers { interp.variables.set("Macros", Macros); interps.push(interp); } else { - interps.push(interps[-1]); + interps.push(new Cloner().clone(interps[-1])); } var parsed = parser.parseString(code); - // TODO if an internal evaluation ever needs to end before its outer evaluation is done, - // this will cause problems because the old args will be overwritten and lost interps[-1].variables.set("__args__", args); // trippy if (args != null) { for (arg => value in args) {