From 05528dfaabb8932478e0da95613242a2e7a828ab Mon Sep 17 00:00:00 2001
From: "p.kosyh"
Date: Fri, 23 Oct 2009 12:39:21 +0000
Subject: [PATCH] ppush/ppop
---
stead/stead.lua | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/stead/stead.lua b/stead/stead.lua
index 7261955..671fc34 100644
--- a/stead/stead.lua
+++ b/stead/stead.lua
@@ -8,15 +8,23 @@ stead = {
txt = {},
}
-function pstart()
+function ppush()
stead.txt_top = stead.txt_top + 1;
+end
+
+function ppop()
+ stead.txt_top = stead.txt_top - 1;
+ if stead.txt_top < 0 then
+ error "pstart/pend mismatch"
+ end
+end
+
+function pstart()
stead.txt[stead.txt_top] = nil
end
function pend()
- local r = stead.txt[stead.txt_top]
- stead.txt_top = stead.txt_top - 1;
- return r
+ return stead.txt[stead.txt_top]
end
function p(...)
@@ -558,13 +566,14 @@ function call(v, n, ...)
return v[n];
end
if type(v[n]) == 'function' then
+ ppush()
pstart()
local a,b = v[n](v, unpack(arg));
if a == nil and b == nil then
- return pend();
- else
- pend();
+ a = pend();
+ b = nil;
end
+ ppop()
return a,b
end
error ("Method not string nor function:"..tostring(n));