diff options
Diffstat (limited to 'lfunc.c')
-rw-r--r-- | lfunc.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: lfunc.c,v 2.40 2014/02/15 13:12:01 roberto Exp roberto $ | 2 | ** $Id: lfunc.c,v 2.41 2014/02/18 13:39:37 roberto Exp roberto $ |
3 | ** Auxiliary functions to manipulate prototypes and closures | 3 | ** Auxiliary functions to manipulate prototypes and closures |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -21,14 +21,16 @@ | |||
21 | 21 | ||
22 | 22 | ||
23 | Closure *luaF_newCclosure (lua_State *L, int n) { | 23 | Closure *luaF_newCclosure (lua_State *L, int n) { |
24 | Closure *c = &luaC_newobj(L, LUA_TCCL, sizeCclosure(n))->cl; | 24 | GCObject *o = luaC_newobj(L, LUA_TCCL, sizeCclosure(n)); |
25 | Closure *c = gco2cl(o); | ||
25 | c->c.nupvalues = cast_byte(n); | 26 | c->c.nupvalues = cast_byte(n); |
26 | return c; | 27 | return c; |
27 | } | 28 | } |
28 | 29 | ||
29 | 30 | ||
30 | Closure *luaF_newLclosure (lua_State *L, int n) { | 31 | Closure *luaF_newLclosure (lua_State *L, int n) { |
31 | Closure *c = &luaC_newobj(L, LUA_TLCL, sizeLclosure(n))->cl; | 32 | GCObject *o = luaC_newobj(L, LUA_TLCL, sizeLclosure(n)); |
33 | Closure *c = gco2cl(o); | ||
32 | c->l.p = NULL; | 34 | c->l.p = NULL; |
33 | c->l.nupvalues = cast_byte(n); | 35 | c->l.nupvalues = cast_byte(n); |
34 | while (n--) c->l.upvals[n] = NULL; | 36 | while (n--) c->l.upvals[n] = NULL; |
@@ -93,7 +95,8 @@ void luaF_close (lua_State *L, StkId level) { | |||
93 | 95 | ||
94 | 96 | ||
95 | Proto *luaF_newproto (lua_State *L) { | 97 | Proto *luaF_newproto (lua_State *L) { |
96 | Proto *f = &luaC_newobj(L, LUA_TPROTO, sizeof(Proto))->p; | 98 | GCObject *o = luaC_newobj(L, LUA_TPROTO, sizeof(Proto)); |
99 | Proto *f = gco2p(o); | ||
97 | f->k = NULL; | 100 | f->k = NULL; |
98 | f->sizek = 0; | 101 | f->sizek = 0; |
99 | f->p = NULL; | 102 | f->p = NULL; |