[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: String parameters when calling C from Lua
- From: Mike Pall <mikelu-0605@...>
- Date: Fri, 19 May 2006 13:21:29 +0200
Daniel Collins wrote:
> The strings are immutable but need to persist in C longer than the
> duration of the API function called from Lua. So the string parameter
> passed in my method one would need to be copied into another buffer.
Ok, a returned string pointer is guaranteed to be valid as long
as the corresponding Lua string exists in the Lua stack (see the
description of lua_tolstring() in the Lua 5.1 manual).
But the current GC algorithm (as of Lua 5.0/5.1) does not move
objects. So right now you can also rely on the fact that the
string pointer is valid as long as there is _any_ reference to it
(i.e. from the table you use to store them).
Yes, the latter means relying on implementation internals. But
nobody forces you to upgrade to a newer Lua version. The C API
usually changes over major versions, anyway.