From 2715fe3aee7c8202b4b5d04748d1c5faa6d8fd9c Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Tue, 22 Apr 2014 11:26:52 +0200 Subject: [PATCH] Prevent GC estimate miscalculation due to buffer growth. --- src/lj_gc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lj_gc.c b/src/lj_gc.c index c2bc397d..c856df4d 100644 --- a/src/lj_gc.c +++ b/src/lj_gc.c @@ -631,6 +631,8 @@ static size_t gc_onestep(lua_State *L) case GCSsweep: { MSize old = g->gc.total; setmref(g->gc.sweep, gc_sweep(g, mref(g->gc.sweep, GCRef), GCSWEEPMAX)); + lua_assert(old >= g->gc.total); + g->gc.estimate -= old - g->gc.total; if (gcref(*mref(g->gc.sweep, GCRef)) == NULL) { gc_shrink(g, L); if (gcref(g->gc.mmudata)) { /* Need any finalizations? */ @@ -643,8 +645,6 @@ static size_t gc_onestep(lua_State *L) g->gc.debt = 0; } } - lua_assert(old >= g->gc.total); - g->gc.estimate -= old - g->gc.total; return GCSWEEPMAX*GCSWEEPCOST; } case GCSfinalize: