diff options
Diffstat (limited to 'lstate.c')
-rw-r--r-- | lstate.c | 19 |
1 files changed, 5 insertions, 14 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lstate.c,v 2.55 2009/06/01 19:09:26 roberto Exp roberto $ | 2 | ** $Id: lstate.c,v 2.56 2009/06/18 18:59:18 roberto Exp roberto $ |
3 | ** Global State | 3 | ** Global State |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -52,12 +52,6 @@ CallInfo *luaE_extendCI (lua_State *L) { | |||
52 | L->ci->next = ci; | 52 | L->ci->next = ci; |
53 | ci->previous = L->ci; | 53 | ci->previous = L->ci; |
54 | ci->next = NULL; | 54 | ci->next = NULL; |
55 | if (++L->nci >= LUAI_MAXCALLS) { | ||
56 | if (L->nci == LUAI_MAXCALLS) /* overflow? */ | ||
57 | luaG_runerror(L, "stack overflow"); | ||
58 | if (L->nci >= LUAI_MAXCALLS + LUAI_EXTRACALLS) /* again? */ | ||
59 | luaD_throw(L, LUA_ERRERR); /* error while handling overflow */ | ||
60 | } | ||
61 | return ci; | 55 | return ci; |
62 | } | 56 | } |
63 | 57 | ||
@@ -69,7 +63,6 @@ void luaE_freeCI (lua_State *L) { | |||
69 | while ((ci = next) != NULL) { | 63 | while ((ci = next) != NULL) { |
70 | next = ci->next; | 64 | next = ci->next; |
71 | luaM_free(L, ci); | 65 | luaM_free(L, ci); |
72 | L->nci--; | ||
73 | } | 66 | } |
74 | } | 67 | } |
75 | 68 | ||
@@ -77,12 +70,12 @@ void luaE_freeCI (lua_State *L) { | |||
77 | static void stack_init (lua_State *L1, lua_State *L) { | 70 | static void stack_init (lua_State *L1, lua_State *L) { |
78 | int i; | 71 | int i; |
79 | /* initialize stack array */ | 72 | /* initialize stack array */ |
80 | L1->stack = luaM_newvector(L, BASIC_STACK_SIZE + EXTRA_STACK, TValue); | 73 | L1->stack = luaM_newvector(L, BASIC_STACK_SIZE, TValue); |
81 | L1->stacksize = BASIC_STACK_SIZE + EXTRA_STACK; | 74 | L1->stacksize = BASIC_STACK_SIZE; |
82 | for (i = 0; i < BASIC_STACK_SIZE + EXTRA_STACK; i++) | 75 | for (i = 0; i < BASIC_STACK_SIZE; i++) |
83 | setnilvalue(L1->stack + i); /* erase new stack */ | 76 | setnilvalue(L1->stack + i); /* erase new stack */ |
84 | L1->top = L1->stack; | 77 | L1->top = L1->stack; |
85 | L1->stack_last = L1->stack+(L1->stacksize - EXTRA_STACK)-1; | 78 | L1->stack_last = L1->stack + L1->stacksize - EXTRA_STACK; |
86 | /* initialize first ci */ | 79 | /* initialize first ci */ |
87 | L1->ci->func = L1->top; | 80 | L1->ci->func = L1->top; |
88 | setnilvalue(L1->top++); /* 'function' entry for this 'ci' */ | 81 | setnilvalue(L1->top++); /* 'function' entry for this 'ci' */ |
@@ -94,7 +87,6 @@ static void stack_init (lua_State *L1, lua_State *L) { | |||
94 | static void freestack (lua_State *L) { | 87 | static void freestack (lua_State *L) { |
95 | L->ci = &L->base_ci; /* reset 'ci' list */ | 88 | L->ci = &L->base_ci; /* reset 'ci' list */ |
96 | luaE_freeCI(L); | 89 | luaE_freeCI(L); |
97 | lua_assert(L->nci == 0); | ||
98 | luaM_freearray(L, L->stack, L->stacksize); | 90 | luaM_freearray(L, L->stack, L->stacksize); |
99 | } | 91 | } |
100 | 92 | ||
@@ -131,7 +123,6 @@ static void preinit_state (lua_State *L, global_State *g) { | |||
131 | L->status = LUA_OK; | 123 | L->status = LUA_OK; |
132 | L->base_ci.next = L->base_ci.previous = NULL; | 124 | L->base_ci.next = L->base_ci.previous = NULL; |
133 | L->ci = &L->base_ci; | 125 | L->ci = &L->base_ci; |
134 | L->nci = 0; | ||
135 | L->errfunc = 0; | 126 | L->errfunc = 0; |
136 | setnilvalue(gt(L)); | 127 | setnilvalue(gt(L)); |
137 | } | 128 | } |