aboutsummaryrefslogtreecommitdiff
path: root/lcode.c
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-04-28 11:00:11 -0300
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>2011-04-28 11:00:11 -0300
commitd120ec29ca6bae7a8f0040c7a0cee27aca7dd81a (patch)
tree8fc27ceb18ff8a10eef242f5ea492a71f803ae36 /lcode.c
parent2aff901c932862ccdb32c145d0034c20fe4fc41d (diff)
downloadlua-d120ec29ca6bae7a8f0040c7a0cee27aca7dd81a.tar.gz
lua-d120ec29ca6bae7a8f0040c7a0cee27aca7dd81a.tar.bz2
lua-d120ec29ca6bae7a8f0040c7a0cee27aca7dd81a.zip
bug in OP_SELF when method name goes to a register
Diffstat (limited to 'lcode.c')
-rw-r--r--lcode.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/lcode.c b/lcode.c
index d2d4b819..a1650979 100644
--- a/lcode.c
+++ b/lcode.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lcode.c,v 2.52 2011/04/07 18:14:12 roberto Exp roberto $ 2** $Id: lcode.c,v 2.53 2011/04/19 16:22:13 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*/
@@ -581,15 +581,15 @@ void luaK_storevar (FuncState *fs, expdesc *var, expdesc *ex) {
581 581
582 582
583void luaK_self (FuncState *fs, expdesc *e, expdesc *key) { 583void luaK_self (FuncState *fs, expdesc *e, expdesc *key) {
584 int func; 584 int ereg;
585 luaK_exp2anyreg(fs, e); 585 luaK_exp2anyreg(fs, e);
586 ereg = e->u.info; /* register where 'e' was placed */
586 freeexp(fs, e); 587 freeexp(fs, e);
587 func = fs->freereg; 588 e->u.info = fs->freereg; /* base register for op_self */
588 luaK_codeABC(fs, OP_SELF, func, e->u.info, luaK_exp2RK(fs, key));
589 freeexp(fs, key);
590 luaK_reserveregs(fs, 2);
591 e->u.info = func;
592 e->k = VNONRELOC; 589 e->k = VNONRELOC;
590 luaK_reserveregs(fs, 2); /* function and 'self' produced by op_self */
591 luaK_codeABC(fs, OP_SELF, e->u.info, ereg, luaK_exp2RK(fs, key));
592 freeexp(fs, key);
593} 593}
594 594
595 595