[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Still having problems .......
- From: RLake@...
- Date: Fri, 10 Oct 2003 09:53:40 -0500
> the problem that i am facing is that in my program i am intializing and
> an explosion effect from scripts ...... now each explosion can or cannot
> PS associated with it ..... this is determined by the value of a string
> if there is a PS attached to the explosion the string contains the name
> apth of the file that initializes the PS and if not then it contains
> (not an empty string but the string "NULL")
I think you would be better off compiling the scripts and storing them
as compiled functions in a Lua table, perhaps with the explosion as
a key. Then you could use real Lua nils to indicate the absence of
> anyways now wat happens that during other calls to LUA the value of some
> of the string in the list of explosions gets overwritten by garbage
> ...... i have traced it down to the call :
> 0043C80F call _luaC_collectgarbage (0043cfd0)
> ..... this is the call that actually overwrites the memory location
> that is allocated to a C++ variable ......
Without actually seeing your code, I can't say for sure what is going
on but it sounds to me like you are storing the address of a Lua string
in a C++ pointer (const char* str = lua_tostring(L, -1);, for example),
and failing to make sure that the string doesn't get garbage collected.
Lua strings will get garbage collected without warning unless you
maintain a Lua reference to them, for example by keeping them on
the stack or by putting them into a table.