diff options
author | Kyle Evans <kevans@FreeBSD.org> | 2020-10-16 13:04:28 +0000 |
---|---|---|
committer | Kyle Evans <kevans@FreeBSD.org> | 2020-10-16 13:04:28 +0000 |
commit | 2a40e13a7afd87b1618335378c99577e73db3eb1 (patch) | |
tree | 56644c42d2166358369370d330bdacfea53b0cd4 /src/lparser.c | |
parent | abe858c1d6e8bf7d7206b09ed715677ac63b5fca (diff) |
Notes
Diffstat (limited to 'src/lparser.c')
-rw-r--r-- | src/lparser.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/lparser.c b/src/lparser.c index cc54de43c6340..2f41e00b803dc 100644 --- a/src/lparser.c +++ b/src/lparser.c @@ -544,6 +544,7 @@ static void open_func (LexState *ls, FuncState *fs, BlockCnt *bl) { fs->bl = NULL; f = fs->f; f->source = ls->source; + luaC_objbarrier(ls->L, f, f->source); f->maxstacksize = 2; /* registers 0/1 are always valid */ enterblock(fs, bl, 0); } @@ -1616,6 +1617,7 @@ static void mainfunc (LexState *ls, FuncState *fs) { fs->f->is_vararg = 1; /* main function is always declared vararg */ init_exp(&v, VLOCAL, 0); /* create and... */ newupvalue(fs, ls->envn, &v); /* ...set environment upvalue */ + luaC_objbarrier(ls->L, fs->f, ls->envn); luaX_next(ls); /* read first token */ statlist(ls); /* parse main body */ check(ls, TK_EOS); @@ -1634,6 +1636,7 @@ LClosure *luaY_parser (lua_State *L, ZIO *z, Mbuffer *buff, sethvalue(L, L->top, lexstate.h); /* anchor it */ luaD_inctop(L); funcstate.f = cl->p = luaF_newproto(L); + luaC_objbarrier(L, cl, cl->p); funcstate.f->source = luaS_new(L, name); /* create and anchor TString */ lua_assert(iswhite(funcstate.f)); /* do not need barrier here */ lexstate.buff = buff; |