lua-users home
lua-l archive

lua_pushusertag(L,0,my-tag)

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


Hello all,
Is there an issue using lua_pushusertag with a reserved tag when the
void* to push is 0?
I am getting some odd behaviour. I have a gc method attached to all
user data with a given tag and the user data that should have a 0 value
for the pointer allways comes back with a different value.
I have the following lua code
 bounds = anm_boundingrect()
 lens = anm_lens
 null = anm_call(lens,"getBounds",bounds)
 anm_print(null)
anm_* are functions that I have lua_register'd
I know that my anm_call function is returning 0 in this case, and it is
returning 1 to indicate that there is one return value on the lua stack.
In anm_print lua_gettop is returning 1 (as expected). Then I call
lua_touserdata and I do not get the same value that I pushed in
anm_call, namely 0. Why not?
I have written many other functions thus far and all is behaving as
expected, this is the only problem I have had. But I am a first time
lua user so this is all new to me.
For now I am working around the problem by pushing (void*)-1 when I
really mean 0 and then doing a reverse mapping to 0 from -1 when I
should but this is ... um ... ugly. I haven't found any doc to explain
the behaviour.
Thanks for any insights.
All the best,
Mark.

AltStyle によって変換されたページ (->オリジナル) /