From 89c90f09555598cf67735dbed7f4fb46941f2e5c Mon Sep 17 00:00:00 2001 From: Mike Pall Date: Sun, 28 Feb 2010 22:22:45 +0100 Subject: [PATCH] Fix error message generation for OOM error. --- src/lj_err.c | 1 + src/lj_gc.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/lj_err.c b/src/lj_err.c index 0aaf5497..7db37f3b 100644 --- a/src/lj_err.c +++ b/src/lj_err.c @@ -737,6 +737,7 @@ LJ_NOINLINE void lj_err_mem(lua_State *L) { if (L->status == LUA_ERRERR+1) /* Don't touch the stack during lua_open. */ lj_vm_unwind_c(L->cframe, LUA_ERRMEM); + L->top = L->base; setstrV(L, L->top++, lj_err_str(L, LJ_ERR_ERRMEM)); lj_err_throw(L, LUA_ERRMEM); } diff --git a/src/lj_gc.c b/src/lj_gc.c index 19cc9e7b..276cd4da 100644 --- a/src/lj_gc.c +++ b/src/lj_gc.c @@ -746,7 +746,7 @@ void *lj_mem_realloc(lua_State *L, void *p, MSize osz, MSize nsz) lua_assert((osz == 0) == (p == NULL)); p = g->allocf(g->allocd, p, osz, nsz); if (p == NULL && nsz > 0) - lj_err_throw(L, LUA_ERRMEM); + lj_err_mem(L); lua_assert((nsz == 0) == (p == NULL)); lua_assert(checkptr32(p)); g->gc.total = (g->gc.total - osz) + nsz; @@ -759,7 +759,7 @@ void *lj_mem_newgco(lua_State *L, MSize size) global_State *g = G(L); GCobj *o = (GCobj *)g->allocf(g->allocd, NULL, 0, size); if (o == NULL) - lj_err_throw(L, LUA_ERRMEM); + lj_err_mem(L); lua_assert(checkptr32(o)); g->gc.total += size; setgcrefr(o->gch.nextgc, g->gc.root);