summaryrefslogtreecommitdiff
path: root/lgc.c
diff options
context:
space:
mode:
Diffstat (limited to 'lgc.c')
-rw-r--r--lgc.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/lgc.c b/lgc.c
index 9e84919f..296179a6 100644
--- a/lgc.c
+++ b/lgc.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lgc.c,v 1.66 2000/09/19 08:42:35 roberto Exp roberto $ 2** $Id: lgc.c,v 1.67 2000/09/25 14:52:10 roberto Exp roberto $
3** Garbage Collector 3** Garbage Collector
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -254,7 +254,7 @@ static void collectstringtab (lua_State *L, int limit) {
254 else { /* collect */ 254 else { /* collect */
255 *p = next->nexthash; 255 *p = next->nexthash;
256 L->strt.nuse--; 256 L->strt.nuse--;
257 L->nblocks -= gcsizestring(L, next->u.s.len); 257 L->nblocks -= sizestring(next->u.s.len);
258 luaM_free(L, next); 258 luaM_free(L, next);
259 } 259 }
260 } 260 }
@@ -343,7 +343,9 @@ long lua_collectgarbage (lua_State *L, long limit) {
343 recovered = recovered - L->nblocks; 343 recovered = recovered - L->nblocks;
344 L->GCthreshold = (limit == 0) ? 2*L->nblocks : L->nblocks+limit; 344 L->GCthreshold = (limit == 0) ? 2*L->nblocks : L->nblocks+limit;
345 if (L->Mbuffsize > MINBUFFER*2) { /* is buffer too big? */ 345 if (L->Mbuffsize > MINBUFFER*2) { /* is buffer too big? */
346 L->Mbuffsize /= 2; /* still larger than MINBUFFER */ 346 size_t diff = L->Mbuffsize/2;
347 L->Mbuffsize -= diff; /* still larger than MINBUFFER */
348 L->nblocks -= diff*sizeof(char);
347 luaM_reallocvector(L, L->Mbuffer, L->Mbuffsize, char); 349 luaM_reallocvector(L, L->Mbuffer, L->Mbuffsize, char);
348 } 350 }
349 callgcTM(L, &luaO_nilobject); 351 callgcTM(L, &luaO_nilobject);