| 812 | |
| 813 | |
| 814 | int luaD_protectedparser(lua_State *L, ZIO *z, const char *name, |
| 815 | const char *mode) { |
| 816 | struct SParser p; |
| 817 | int status; |
| 818 | L->nny++; /* cannot yield during parsing */ |
| 819 | p.z = z; p.name = name; p.mode = mode; |
| 820 | p.dyd.actvar.arr = nullptr; p.dyd.actvar.size = 0; |
| 821 | p.dyd.gt.arr = nullptr; p.dyd.gt.size = 0; |
| 822 | p.dyd.label.arr = nullptr; p.dyd.label.size = 0; |
| 823 | luaZ_initbuffer(L, &p.buff); |
| 824 | status = luaD_pcall(L, f_parser, &p, savestack(L, L->top), L->errfunc); |
| 825 | luaZ_freebuffer(L, &p.buff); |
| 826 | luaM_freearray(L, p.dyd.actvar.arr, p.dyd.actvar.size); |
| 827 | luaM_freearray(L, p.dyd.gt.arr, p.dyd.gt.size); |
| 828 | luaM_freearray(L, p.dyd.label.arr, p.dyd.label.size); |
| 829 | L->nny--; |
| 830 | return status; |
| 831 | } |
| 832 | |
| 833 |
no test coverage detected