lua-users home
lua-l archive

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


>(entire app exiting with no warning).

exit() is only called in luaD_breakrun. If there's no warning it's because
_ERRORMESSAGE is not displaying it. (You said you've redefined it.)
But you'd only get "unable to recover; exiting", which is hardly helpful...

>- What are some best practices for stack control?

One simple rule: never leave garbage on the stack. In other words, unless
you're returning values to Lua, leave the stack as you found it.

>- Do I have to extensively and manually check before every stack
>operation to make sure I never pop an empty stack (causes protection
>faults later on) or allow the stack to leak (eventually causes exit() on
>the entire app)?

You could try setting up call hooks and testing the stack only in these.

>- Is there a recommended way to completely prevent lua from ever calling
>exit, or at least call my exit handler so I can let people know what's
>going on?

Simply define a Lua C function that does your main work and then lua_call it,
instead of calling it as you'd normally do in C:
	lua_pushcclosure(L,f,0);
	lua_call(L,0,0);
If something goes wrong, error will be called normally.
--lhf