[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: lua_getref problem
- From: Juergen Fuhrmann <fuhrmann@...>
- Date: Wed, 19 May 1999 15:37:03 +0200
> Wed, 19 May 1999 09:02:11 -0300 (EST)
> Juergen Fuhrmann <fuhrmann@wias-berlin.de> wrote:
>
>
>
> Dear men(&women) on the moon,
>
> We are successfully using now lua as an extension language for several
> numerics packages (I confess I still have to post this info onto the
> list of projects using lua), and with things becoming more complex we
> are stuck now with the following problem:
>
> I have written a package olua which manages proxies of C structs using
> lua tables. The central data type of this is oluaObject which is a
> struct holding a _reference_ to an lua object created by lua_ref --
> after running into trouble by using luaObjects directly due some
> possibly rather common misunderstanding of luaObjects.
>
> Everytime I want to access the luaObject behind the oluaObject I now
> have to call lua_getref. These calls to lua_getref increase the C2lua
> stack by calling put_luaObject. The result is that, when doing this in
> a complex environment, I get the "Lua2C - C2Lua overflow" message just
> by accessing these references a lot of times. Of course I could
> increase the stack limit in my source to fit our needs for the time
> being, but I consider this as rather unnatural...
>
> Is this a bug, a feature or a mis-understanding from my side ?
>
It is the later ;-}
<RTFM>
When C code calls Lua repeatedly, as in a loop, objects returned by these calls can accumulate, and may cause a stack overflow.
To avoid this, nested blocks can be defined with the functions:
void lua_beginblock (void);
void lua_endblock (void);
After the end of the block, all lua_Object's created inside it are released. The use of explicit nested blocks is strongly
encouraged.
</RTFM>
So I inserted this stuff in the appropriate places, and all problems
have gone in a magic fashion...
Sorry for any inconvenience.
Juergen
Juergen Fuhrmann Numerical Mathematics & Scientific Computing
Weierstrass Institute for Applied Analysis and Stochastics
Mohrenstr. 39 10117 Berlin fon:+49 30 20372560 fax:+49 30 2044975
http://www.wias-berlin.de/~fuhrmann mailto:fuhrmann@wias-berlin.de