diff options
-rw-r--r-- | ldo.c | 4 |
1 files changed, 3 insertions, 1 deletions
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | ** $Id: ldo.c,v 2.70 2009/10/23 19:12:19 roberto Exp roberto $ | 2 | ** $Id: ldo.c,v 2.71 2009/11/17 16:33:38 roberto Exp roberto $ |
3 | ** Stack and Call structure of Lua | 3 | ** Stack and Call structure of Lua |
4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
5 | */ | 5 | */ |
@@ -589,12 +589,14 @@ static void f_parser (lua_State *L, void *ud) { | |||
589 | int luaD_protectedparser (lua_State *L, ZIO *z, const char *name) { | 589 | int luaD_protectedparser (lua_State *L, ZIO *z, const char *name) { |
590 | struct SParser p; | 590 | struct SParser p; |
591 | int status; | 591 | int status; |
592 | L->nny++; /* cannot yield during parsing */ | ||
592 | p.z = z; p.name = name; | 593 | p.z = z; p.name = name; |
593 | p.varl.actvar = NULL; p.varl.nactvar = p.varl.actvarsize = 0; | 594 | p.varl.actvar = NULL; p.varl.nactvar = p.varl.actvarsize = 0; |
594 | luaZ_initbuffer(L, &p.buff); | 595 | luaZ_initbuffer(L, &p.buff); |
595 | status = luaD_pcall(L, f_parser, &p, savestack(L, L->top), L->errfunc); | 596 | status = luaD_pcall(L, f_parser, &p, savestack(L, L->top), L->errfunc); |
596 | luaZ_freebuffer(L, &p.buff); | 597 | luaZ_freebuffer(L, &p.buff); |
597 | luaM_freearray(L, p.varl.actvar, p.varl.actvarsize); | 598 | luaM_freearray(L, p.varl.actvar, p.varl.actvarsize); |
599 | L->nny--; | ||
598 | return status; | 600 | return status; |
599 | } | 601 | } |
600 | 602 | ||