aboutsummaryrefslogtreecommitdiff
path: root/lstate.c
diff options
context:
space:
mode:
Diffstat (limited to 'lstate.c')
-rw-r--r--lstate.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/lstate.c b/lstate.c
index f3f2ccfd..059be806 100644
--- a/lstate.c
+++ b/lstate.c
@@ -102,14 +102,19 @@ LUA_API int lua_setcstacklimit (lua_State *L, unsigned int limit) {
102} 102}
103 103
104 104
105CallInfo *luaE_extendCI (lua_State *L) { 105CallInfo *luaE_extendCI (lua_State *L, int err) {
106 CallInfo *ci; 106 CallInfo *ci;
107 lua_assert(L->ci->next == NULL); 107 ci = luaM_reallocvector(L, NULL, 0, 1, CallInfo);
108 ci = luaM_new(L, CallInfo); 108 if (l_unlikely(ci == NULL)) { /* allocation failed? */
109 lua_assert(L->ci->next == NULL); 109 if (err)
110 L->ci->next = ci; 110 luaM_error(L); /* raise the error */
111 return NULL; /* else only report it */
112 }
113 ci->next = L->ci->next;
111 ci->previous = L->ci; 114 ci->previous = L->ci;
112 ci->next = NULL; 115 L->ci->next = ci;
116 if (ci->next)
117 ci->next->previous = ci;
113 ci->u.l.trap = 0; 118 ci->u.l.trap = 0;
114 L->nci++; 119 L->nci++;
115 return ci; 120 return ci;