diff options
Diffstat (limited to 'lcode.c')
| -rw-r--r-- | lcode.c | 9 |
1 files changed, 6 insertions, 3 deletions
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: lcode.c,v 1.75 2001/06/12 14:36:48 roberto Exp roberto $ | 2 | ** $Id: lcode.c,v 1.76 2001/06/15 20:36:57 roberto Exp roberto $ |
| 3 | ** Code generator for Lua | 3 | ** Code generator for Lua |
| 4 | ** See Copyright Notice in lua.h | 4 | ** See Copyright Notice in lua.h |
| 5 | */ | 5 | */ |
| @@ -462,11 +462,14 @@ void luaK_storevar (FuncState *fs, expdesc *var, expdesc *exp) { | |||
| 462 | 462 | ||
| 463 | 463 | ||
| 464 | void luaK_self (FuncState *fs, expdesc *e, expdesc *key) { | 464 | void luaK_self (FuncState *fs, expdesc *e, expdesc *key) { |
| 465 | int func; | ||
| 465 | luaK_exp2anyreg(fs, e); | 466 | luaK_exp2anyreg(fs, e); |
| 466 | freeexp(fs, e); | 467 | freeexp(fs, e); |
| 468 | func = fs->freereg; | ||
| 467 | luaK_reserveregs(fs, 2); | 469 | luaK_reserveregs(fs, 2); |
| 468 | luaK_codeABC(fs, OP_SELF, fs->freereg-2, e->u.i.info, luaK_exp2RK(fs, key)); | 470 | luaK_codeABC(fs, OP_SELF, func, e->u.i.info, luaK_exp2RK(fs, key)); |
| 469 | e->u.i.info = fs->freereg-2; | 471 | freeexp(fs, key); |
| 472 | e->u.i.info = func; | ||
| 470 | e->k = VNONRELOC; | 473 | e->k = VNONRELOC; |
| 471 | } | 474 | } |
| 472 | 475 | ||
