[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: How to change _ENV's value in a pure C function?
- From: Miles Bader <miles@...>
- Date: Sat, 24 Dec 2011 14:02:19 +0900
Xavier Wang <weasley.wx@gmail.com> writes:
> I'm wonder how to change _ENV's value, or rebuild a new _ENV locals in
> C function. the only idea I make out is using a wrapping lua code:
>
> lua_newtable(L);
> lua_pushcfunction(L, myfunc);
> luaL_loadstring(L, "local _ENV,func = ... return func()");
> lua_call(L, 2, 0);
>
> Is there any other method to change _ENV in a C function using a pure C API?
I'm not totally sure what you want to do ...
To load a Lua source string with a different _ENV, you just use the
Lua function "load" ("luaB_load" in C), since "load" replaced
loadstring in 5.2 ... e.g. "load (MYSTRING, nil, nil, MYENV)".
-Miles
--
Pray, v. To ask that the laws of the universe be annulled in behalf of a
single petitioner confessedly unworthy.