** load precompiled chunk */
| 204 | ** load precompiled chunk |
| 205 | */ |
| 206 | Closure* luaU_undump (lua_State* L, ZIO* Z, Mbuffer* buff, const char* name) |
| 207 | { |
| 208 | LoadState S; |
| 209 | Closure* cl; |
| 210 | if (*name=='@' || *name=='=') |
| 211 | S.name=name+1; |
| 212 | else if (*name==LUA_SIGNATURE[0]) |
| 213 | S.name="binary string"; |
| 214 | else |
| 215 | S.name=name; |
| 216 | S.L=L; |
| 217 | S.Z=Z; |
| 218 | S.b=buff; |
| 219 | LoadHeader(&S); |
| 220 | cl=luaF_newLclosure(L,1); |
| 221 | setclLvalue(L,L->top,cl); incr_top(L); |
| 222 | cl->l.p=luaF_newproto(L); |
| 223 | LoadFunction(&S,cl->l.p); |
| 224 | if (cl->l.p->sizeupvalues != 1) |
| 225 | { |
| 226 | Proto* p=cl->l.p; |
| 227 | cl=luaF_newLclosure(L,cl->l.p->sizeupvalues); |
| 228 | cl->l.p=p; |
| 229 | setclLvalue(L,L->top-1,cl); |
| 230 | } |
| 231 | luai_verifycode(L,buff,cl->l.p); |
| 232 | return cl; |
| 233 | } |
| 234 | |
| 235 | #define MYINT(s) (s[0]-'0') |
| 236 | #define VERSION MYINT(LUA_VERSION_MAJOR)*16+MYINT(LUA_VERSION_MINOR) |
no test coverage detected