lua-users home
lua-l archive

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


On 26 August 2011 11:29, Robert G. Jakabosky <bobby@sharedrealm.com> wrote:
> On Friday 26, liam mail wrote:
>> On 26 August 2011 10:21, Josh Simmons <simmons.44@gmail.com> wrote:
>> > 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.
>>
>> It returns what the manual says
>> "If the value at the given acceptable index is a full userdata,
>> returns its block address. If the value is a light userdata, returns
>> its pointer. Otherwise, returns NULL"
>> The index is neither an acceptable index, full or a light userdata
>> therefore it must return NULL.
>
> The manual doesn't say that non-acceptable indices should return NULL.
>

I must be missing something here. The manual entry for the function
talks about acceptable indicies and states "Otherwise NULL'. What am I
missing that causes people to keep telling me I am wrong and that the
wording is correct?

Liam