lua-users home
lua-l archive

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


Title: RE: odd problem with gc and lua3.2

doh! what was I thinking. :) Thanks! 


> -----Original Message-----
> From: Edgar Toernig [mailto:froese@gmx.de]
> Sent: Thursday, April 05, 2001 7:55 PM
> To: Multiple recipients of list
> Subject: Re: odd problem with gc and lua3.2
>
>
> Jim Mathies wrote:
> >
> > I'm having a problem where Lua 3.2 is garbage collecting a userdata
> > variable even though the userdata value is stored in a global table.
> >[...]
> > tag = lua_newtag()
> > lua_pushcfunction( cpointer_gc_function );
> > lua_settagmethod( tag, "gc" );
> > lua_pushusertag( (void*)cpointer, tag );
>
> Ok up to here.
>
> > lua_pop();
>
> You remove your tagged userdata here!??
>
> > lua_pushobject( table );
> > lua_pushnumber( index );  ----> index = 1
> > lua_pushuserdata( cpointer );
>
> and create a new one with the default tag???
>
> > lua_rawsettable();
>
> and put this one into the table!
>
> >[...]  Since 'mytable' still has the cpointer userdata, I
> don't understand
> > why Lua is calling gc.
>
> mytable has a cpointer userdata with the default tag.  Your userdata
> with the private tag was never stored in the table.  So the GC is free
> to collect it...
>
> Ciao, ET.
>