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;
}