[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Missing error message in panic handler / calling luaD_throw without error message on stack
- From: Roberto Ierusalimschy <roberto@...>
- Date: Mon, 10 Nov 2014 09:51:52 -0200
> If lua_newuserdata() fails to allocate memory and no pcall/xpcall is
> active, then the panic handler will be called without pushing an error
> message on top of the stack (i.e. the value that has been on top of the
> stack prior to the lua_newuserdata() call will be where the error
> message ought to be).
>
> Is this behavior intended?
No.
> Looking into the source code of Lua 5.2.3, I found that in line #93 of
> lmem.c, the function luaD_throw(L, LUA_ERRMEM) is called without
> pushing first an error message on top of the stack. Other calls of
> luaD_throw, however, push an error message to the stack, e.g. function
> lexerror() in llex.c, line #110 or function checkmode() in ldo.c,
> line #635.
>
> Is this a bug?
There seems to be a bug, but not there. As lhf pointed out, memory
errors are handled differently; the error message for them is pushed in
ldo.c, function 'seterrorobj'.
-- Roberto