[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: RE: stack and arguments of C functions
- From: Benoit Germain <bgermain@...>
- Date: Wed, 30 Oct 2002 12:00:30 +0100
oops, this one went too fast. Forget it, LUA behaves as I would have
expected, it is just that I was not able to see it right away :-)
> -----Original Message-----
> From: Benoit Germain
> Sent: mercredi 30 octobre 2002 11:42
> To: 'LUA'
> Subject: stack and arguments of C functions
>
> Hello,
>
> I have observed the following thing with a lua C function, such as:
>
> // C
>
> int f ( lua_State * L )
> {
> lua_Number n1 = lua_tonumber ( L , 1 ) ;
> lua_Number n2 = lua_tonumber ( L , 2 ) ;
>
> return 0 ;
> }
>
> lua_register ( L , "f" , f ) ;
>
> and :
>
> -- LUA
>
> f ( 3 )
>
>
> if this function is passed a given number of arguments,
> attempting to get an argument with an absolute index greater
> than the actual number of received arguments will return the
> object at that position as long as it is not beyond the
> absolute top of the stack. Therefore, lua_tonumber ( L , 2 )
> will try to convert whatever is in the stack at that
> position, disregarding the fact that there is only one argument.
>
> I would have expected all lua_to... functions to behave in
> that situation as if nil was found at that position.
>
> What is the official behaviour ? Do C functions have to
> explicitly check the number of arguments before getting them ?
>
>
> Regards,
>
> Benoit.