From e3d7365d75713a870e57b32350efcc9e84270388 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Wed, 1 Jun 2022 17:03:57 +0000 Subject: [PATCH] copy arg arrays before passing to macro/form functions --- kiss/src/kiss/Kiss.hx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/kiss/src/kiss/Kiss.hx b/kiss/src/kiss/Kiss.hx index 44eeca90..19e37fb2 100644 --- a/kiss/src/kiss/Kiss.hx +++ b/kiss/src/kiss/Kiss.hx @@ -355,20 +355,20 @@ class Kiss { case StrExp(s): EConst(CString(s)).withMacroPosOf(exp); case CallExp({pos: _, def: Symbol(ff)}, args) if (fieldForms.exists(ff)): - var field = fieldForms[ff](exp, args, k); + var field = fieldForms[ff](exp, args.copy(), k); k.fieldList.push(field); k.fieldDict[field.name] = field; none; // Field forms are no-ops case CallExp({pos: _, def: Symbol(mac)}, args) if (macros.exists(mac)): macroUsed = true; - var expanded = macros[mac](exp, args, k); + var expanded = macros[mac](exp, args.copy(), k); if (expanded != null) { convert(expanded); } else { none; }; case CallExp({pos: _, def: Symbol(specialForm)}, args) if (specialForms.exists(specialForm)): - specialForms[specialForm](exp, args, k); + specialForms[specialForm](exp, args.copy(), k); case CallExp({pos: _, def: Symbol(alias)}, args) if (k.callAliases.exists(alias)): convert(CallExp(k.callAliases[alias].withPosOf(exp), args).withPosOf(exp)); case CallExp(func, args):