diff options
Diffstat (limited to 'lundump.c')
| -rw-r--r-- | lundump.c | 24 |
1 files changed, 13 insertions, 11 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lundump.c,v 1.63 2003/08/25 19:51:54 roberto Exp roberto $ | 2 | ** $Id: lundump.c,v 1.64 2003/08/27 21:01:44 roberto Exp roberto $ |
| 3 | ** load pre-compiled Lua chunks | 3 | ** load pre-compiled Lua chunks |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -158,13 +158,14 @@ static Proto* LoadFunction (LoadState* S, TString* p); | |||
| 158 | static void LoadConstants (LoadState* S, Proto* f) | 158 | static void LoadConstants (LoadState* S, Proto* f) |
| 159 | { | 159 | { |
| 160 | int i,n; | 160 | int i,n; |
| 161 | lua_State *L=S->L; | ||
| 161 | n=LoadInt(S); | 162 | n=LoadInt(S); |
| 162 | f->k=luaM_newvector(S->L,n,TObject); | 163 | f->k=luaM_newvector(L,n,TValue); |
| 163 | f->sizek=n; | 164 | f->sizek=n; |
| 164 | for (i=0; i<n; i++) setnilvalue(&f->k[i]); | 165 | for (i=0; i<n; i++) setnilvalue(&f->k[i]); |
| 165 | for (i=0; i<n; i++) | 166 | for (i=0; i<n; i++) |
| 166 | { | 167 | { |
| 167 | TObject* o=&f->k[i]; | 168 | TValue* o=&f->k[i]; |
| 168 | int t=LoadByte(S); | 169 | int t=LoadByte(S); |
| 169 | switch (t) | 170 | switch (t) |
| 170 | { | 171 | { |
| @@ -172,18 +173,18 @@ static void LoadConstants (LoadState* S, Proto* f) | |||
| 172 | setnvalue(o,LoadNumber(S)); | 173 | setnvalue(o,LoadNumber(S)); |
| 173 | break; | 174 | break; |
| 174 | case LUA_TSTRING: | 175 | case LUA_TSTRING: |
| 175 | setsvalue2n(o,LoadString(S)); | 176 | setsvalue2n(L, o,LoadString(S)); |
| 176 | break; | 177 | break; |
| 177 | case LUA_TNIL: | 178 | case LUA_TNIL: |
| 178 | setnilvalue(o); | 179 | setnilvalue(o); |
| 179 | break; | 180 | break; |
| 180 | default: | 181 | default: |
| 181 | luaG_runerror(S->L,"bad constant type (%d) in %s",t,S->name); | 182 | luaG_runerror(L,"bad constant type (%d) in %s",t,S->name); |
| 182 | break; | 183 | break; |
| 183 | } | 184 | } |
| 184 | } | 185 | } |
| 185 | n=LoadInt(S); | 186 | n=LoadInt(S); |
| 186 | f->p=luaM_newvector(S->L,n,Proto*); | 187 | f->p=luaM_newvector(L,n,Proto*); |
| 187 | f->sizep=n; | 188 | f->sizep=n; |
| 188 | for (i=0; i<n; i++) f->p[i]=NULL; | 189 | for (i=0; i<n; i++) f->p[i]=NULL; |
| 189 | for (i=0; i<n; i++) f->p[i]=LoadFunction(S,f->source); | 190 | for (i=0; i<n; i++) f->p[i]=LoadFunction(S,f->source); |
| @@ -191,9 +192,10 @@ static void LoadConstants (LoadState* S, Proto* f) | |||
| 191 | 192 | ||
| 192 | static Proto* LoadFunction (LoadState* S, TString* p) | 193 | static Proto* LoadFunction (LoadState* S, TString* p) |
| 193 | { | 194 | { |
| 194 | Proto* f=luaF_newproto(S->L); | 195 | lua_State *L=S->L; |
| 195 | setptvalue2s(S->L->top, f); | 196 | Proto* f=luaF_newproto(L); |
| 196 | incr_top(S->L); | 197 | setptvalue2s(L, L->top, f); |
| 198 | incr_top(L); | ||
| 197 | f->source=LoadString(S); if (f->source==NULL) f->source=p; | 199 | f->source=LoadString(S); if (f->source==NULL) f->source=p; |
| 198 | f->lineDefined=LoadInt(S); | 200 | f->lineDefined=LoadInt(S); |
| 199 | f->nups=LoadByte(S); | 201 | f->nups=LoadByte(S); |
| @@ -206,9 +208,9 @@ static Proto* LoadFunction (LoadState* S, TString* p) | |||
| 206 | LoadConstants(S,f); | 208 | LoadConstants(S,f); |
| 207 | LoadCode(S,f); | 209 | LoadCode(S,f); |
| 208 | #ifndef TRUST_BINARIES | 210 | #ifndef TRUST_BINARIES |
| 209 | if (!luaG_checkcode(f)) luaG_runerror(S->L,"bad code in %s",S->name); | 211 | if (!luaG_checkcode(f)) luaG_runerror(L,"bad code in %s",S->name); |
| 210 | #endif | 212 | #endif |
| 211 | S->L->top--; | 213 | L->top--; |
| 212 | return f; | 214 | return f; |
| 213 | } | 215 | } |
| 214 | 216 | ||
