[prev in list] [next in list] [prev in thread] [next in thread]
List: lua-l
Subject: gc tag
From: "Leiradella, Andre V Matos Da Cunha" <ANDRE.LEIRADELLA () bra ! xerox ! com>
Date: 2001-10-31 15:38:40
Message-ID: E7AA9137159DD31187FA0008C79F2C88E5C39A () bra0100fm1 ! bra ! xerox ! com
[Download RAW message or body]
Hi All,
>From the reference manual, section 4.8 Tag Methods, I can see that the Lua
function that describes the behavior of the "gc" event does not return any
value.
I'm writing C functions to free memory used by my userdata types. All they
do is something like:
-----cut-----
static int gcImage(lua_State *L) {
image_t *image;
image=luaL_check_tag(L,1,imageTag);
free_image(image);
return 0;
}
-----cut-----
where luaL_check_tag is a function I created inside lauxlib.c to print an
user-friendly error message in case there is a tag mismatch:
-----cut-----
LUALIB_API void *luaL_check_tag(lua_State *L,int narg,int tag) {
if (lua_tag(L,narg)!=tag)
tag_error(L,narg,tag);
return lua_touserdata(L,narg);
}
-----cut-----
Am I supposed to return something from the C gc tag method? The reason I'm
asking this is because I'm getting random segfaults inside lua
(ltable.c:luaH_getstr and/or lstring.c:luaS_newlstr) and everything in my
code seems to be ok except for this doubt regarding gc tag methods. I'm
using Lua 4.1 alpha and everything is compiled with MingW.
Another question: is it safe to call lua_unref from a thread other than the
one that is executing my lua code? I'm using an audio library that runs in
its own thread and has a callback mechanism to flag when a music or chunk of
sound has finished playing. I call lua_ref when the music/sound starts and I
want to call lua_unref inside the callback function. If I can't do that, is
it safe to put a semaphore around lua_unref (or some other function - which
one?) to make it safe?
Regards,
Andre de Leiradella
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic