lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


> 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