diff --git a/Kernel.cs b/Kernel.cs index a5e1fbcb..77e2f334 100644 --- a/Kernel.cs +++ b/Kernel.cs @@ -424,11 +424,10 @@ public class Kernel { } } - public static Frame TakeReturnFrame; + public static Stack TakeReturnStack = new Stack(); public static Frame Take(Frame th, Variable payload) { - Frame r = TakeReturnFrame; - TakeReturnFrame = null; + Frame r = TakeReturnStack.Pop(); r.lex["$nextframe"] = NewROScalar(th); r.resultSlot = payload; th.resultSlot = payload; @@ -436,7 +435,7 @@ public class Kernel { } public static Frame CoTake(Frame th, Frame from) { - TakeReturnFrame = th; + TakeReturnStack.Push(th); return from; }