diff options
| author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-11-21 13:46:44 -0200 |
|---|---|---|
| committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2002-11-21 13:46:44 -0200 |
| commit | be00cd2a6b0f7d26dfc9ba74c262a5574f6521d0 (patch) | |
| tree | 9e77cd6c9e5ba76da495e6b14fea84d3fbfeda4b /ldo.c | |
| parent | 2e4e888de02d248fc2688dd740de92f8f4f56656 (diff) | |
| download | lua-be00cd2a6b0f7d26dfc9ba74c262a5574f6521d0.tar.gz lua-be00cd2a6b0f7d26dfc9ba74c262a5574f6521d0.tar.bz2 lua-be00cd2a6b0f7d26dfc9ba74c262a5574f6521d0.zip | |
easier way to keep `base' correct
Diffstat (limited to 'ldo.c')
| -rw-r--r-- | ldo.c | 9 |
1 files changed, 2 insertions, 7 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: ldo.c,v 1.204 2002/11/18 18:45:38 roberto Exp roberto $ | 2 | ** $Id: ldo.c,v 1.205 2002/11/21 15:16:04 roberto Exp roberto $ |
| 3 | ** Stack and Call structure of Lua | 3 | ** Stack and Call structure of Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -107,13 +107,8 @@ static void correctstack (lua_State *L, TObject *oldstack) { | |||
| 107 | for (up = L->openupval; up != NULL; up = up->gch.next) | 107 | for (up = L->openupval; up != NULL; up = up->gch.next) |
| 108 | gcotouv(up)->v = (gcotouv(up)->v - oldstack) + L->stack; | 108 | gcotouv(up)->v = (gcotouv(up)->v - oldstack) + L->stack; |
| 109 | for (ci = L->base_ci; ci <= L->ci; ci++) { | 109 | for (ci = L->base_ci; ci <= L->ci; ci++) { |
| 110 | StkId newbase = (ci->base - oldstack) + L->stack; | ||
| 111 | ci->top = (ci->top - oldstack) + L->stack; | 110 | ci->top = (ci->top - oldstack) + L->stack; |
| 112 | if (ci->state & CI_HASFRAME) { /* Lua function with active frame? */ | 111 | ci->base = (ci->base - oldstack) + L->stack; |
| 113 | lua_assert(*ci->u.l.pb == ci->base); | ||
| 114 | *ci->u.l.pb = newbase; /* correct frame */ | ||
| 115 | } | ||
| 116 | ci->base = newbase; | ||
| 117 | } | 112 | } |
| 118 | L->base = L->ci->base; | 113 | L->base = L->ci->base; |
| 119 | } | 114 | } |
