lua-users home
lua-l archive

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


On Fri, Aug 26, 2011 at 7:05 PM, liam mail <liam.list@googlemail.com> wrote:
> On 26 August 2011 09:50, Josh Simmons <simmons.44@gmail.com> wrote:
>> On Fri, Aug 26, 2011 at 5:58 PM, liam mail <liam.list@googlemail.com> wrote:
>>> I am just looking for some clarification when using the macro
>>> LUA_USE_APICHECK, is it the case that indicators in the manual are not
>>> respected for functions when using this macro? I ask because I decided
>>> to turn the option on and run unit tests on OOLua to find that an
>>> assert is being triggered for the function lua_touserdata (indirectly
>>> via index2addr) with it, yet the manual states "'-' means the function
>>> never throws any error". The situation under test was trying to pull a
>>> user data of an empty stack which as I understood it would return NULL
>>> and does without the macro, this situation is handled gracefully in
>>> the test but means I can not use the macro as is. Firstly because an
>>> assert (from assert.h) in unit tests is bad and also it would require
>>> different tests for release and debug builds.
>>>
>>> Thanks
>>> Liam
>>>
>>>
>>
>> I suggest checking the stack height before trying to remove things from it.
>>
>
> There is no need to check the stack depth as it will return NULL as it
> should when the macro is not used.
>
>> Errors in this instance refer to Lua errors, not any kind of C
>> assertions or error handling.
>
> Yet it does say any error, which is why I ask the question.
>
> Liam
>
>

Just because it returns what you think it should does not mean it's a
valid API usage. Popping off an empty stack is using an invalid stack
index (http://www.lua.org/manual/5.1/manual.html#3.2) and is therefore
not sane API usage.

Error when used in the reference manual refers to Lua Errors
(http://www.lua.org/manual/5.1/manual.html#2.7) specifically, not
general failure.