aboutsummaryrefslogtreecommitdiff
path: root/lstate.c
diff options
context:
space:
mode:
Diffstat (limited to 'lstate.c')
-rw-r--r--lstate.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lstate.c b/lstate.c
index 71671785..874b35bd 100644
--- a/lstate.c
+++ b/lstate.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lstate.c,v 1.40 2000/09/21 14:41:25 roberto Exp roberto $ 2** $Id: lstate.c,v 1.41 2000/09/25 16:22:42 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*/
@@ -78,7 +78,7 @@ lua_State *lua_open (int stacksize) {
78 L->refArray = NULL; 78 L->refArray = NULL;
79 L->refSize = 0; 79 L->refSize = 0;
80 L->refFree = NONEXT; 80 L->refFree = NONEXT;
81 L->nblocks = 0; 81 L->nblocks = sizeof(lua_State);
82 L->GCthreshold = MAX_INT; /* to avoid GC during pre-definitions */ 82 L->GCthreshold = MAX_INT; /* to avoid GC during pre-definitions */
83 L->callhook = NULL; 83 L->callhook = NULL;
84 L->linehook = NULL; 84 L->linehook = NULL;
@@ -100,11 +100,16 @@ void lua_close (lua_State *L) {
100 LUA_ASSERT(L->rootcl == NULL, "list should be empty"); 100 LUA_ASSERT(L->rootcl == NULL, "list should be empty");
101 LUA_ASSERT(L->roottable == NULL, "list should be empty"); 101 LUA_ASSERT(L->roottable == NULL, "list should be empty");
102 luaS_freeall(L); 102 luaS_freeall(L);
103 if (L->stack)
104 L->nblocks -= (L->stack_last - L->stack + 1)*sizeof(TObject);
103 luaM_free(L, L->stack); 105 luaM_free(L, L->stack);
106 L->nblocks -= (L->last_tag+1)*sizeof(struct IM);
104 luaM_free(L, L->IMtable); 107 luaM_free(L, L->IMtable);
108 L->nblocks -= (L->refSize)*sizeof(struct Ref);
105 luaM_free(L, L->refArray); 109 luaM_free(L, L->refArray);
110 L->nblocks -= (L->Mbuffsize)*sizeof(char);
106 luaM_free(L, L->Mbuffer); 111 luaM_free(L, L->Mbuffer);
107 LUA_ASSERT(L->nblocks == 0, "wrong count for nblocks"); 112 LUA_ASSERT(L->nblocks == sizeof(lua_State), "wrong count for nblocks");
108 luaM_free(L, L); 113 luaM_free(L, L);
109 LUA_ASSERT(L != lua_state || memdebug_numblocks == 0, "memory leak!"); 114 LUA_ASSERT(L != lua_state || memdebug_numblocks == 0, "memory leak!");
110 LUA_ASSERT(L != lua_state || memdebug_total == 0,"memory leak!"); 115 LUA_ASSERT(L != lua_state || memdebug_total == 0,"memory leak!");