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 | ||