diff options
author | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2001-07-17 11:30:44 -0300 |
---|---|---|
committer | Roberto Ierusalimschy <roberto@inf.puc-rio.br> | 2001-07-17 11:30:44 -0300 |
commit | a598804a0435a53538c8ab6c74182347b797ae9b (patch) | |
tree | 2d67c33b18d5efd74bfb0727aaeff6d1c085b41c /lcode.c | |
parent | 6c8e652aa6b5bf7018ff74473a6ef5bb58e4890e (diff) | |
download | lua-a598804a0435a53538c8ab6c74182347b797ae9b.tar.gz lua-a598804a0435a53538c8ab6c74182347b797ae9b.tar.bz2 lua-a598804a0435a53538c8ab6c74182347b797ae9b.zip |
small bug in luaK_self (side effects)
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 | ||