aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-02-02 11:47:31 -0200
committerRoberto Ierusalimschy <roberto@inf.puc-rio.br>1999-02-02 11:47:31 -0200
commit50248e440a02c5eff357eaf2239cd1e7ef691614 (patch)
treea50f223d83b8e2650eb5e07b640fcfcccf23125f
parent0f0079f394a21a5e8c705054fd807abb0cc22324 (diff)
downloadlua-50248e440a02c5eff357eaf2239cd1e7ef691614.tar.gz
lua-50248e440a02c5eff357eaf2239cd1e7ef691614.tar.bz2
lua-50248e440a02c5eff357eaf2239cd1e7ef691614.zip
"if" expression leaves only one of its expressions on the stack
-rw-r--r--lparser.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lparser.c b/lparser.c
index 61a2b6c9..263277f4 100644
--- a/lparser.c
+++ b/lparser.c
@@ -1,5 +1,5 @@
1/* 1/*
2** $Id: lparser.c,v 1.10 1999/01/29 13:48:58 roberto Exp roberto $ 2** $Id: lparser.c,v 1.11 1999/02/01 18:52:05 roberto Exp roberto $
3** LL(1) Parser and code generator for Lua 3** LL(1) Parser and code generator for Lua
4** See Copyright Notice in lua.h 4** See Copyright Notice in lua.h
5*/ 5*/
@@ -847,7 +847,10 @@ static void ifpart (LexState *ls, int isexp, int line) {
847 next(ls); /* skip IF or ELSEIF */ 847 next(ls); /* skip IF or ELSEIF */
848 c = cond(ls); 848 c = cond(ls);
849 check(ls, THEN); 849 check(ls, THEN);
850 if (isexp) exp1(ls); 850 if (isexp) {
851 exp1(ls);
852 deltastack(ls, -1); /* only then xor else part will stay on the stack */
853 }
851 else block(ls); 854 else block(ls);
852 e = SaveWord(ls); 855 e = SaveWord(ls);
853 if (ls->token == ELSEIF) 856 if (ls->token == ELSEIF)