diff --git a/src/docode.c b/src/docode.c index 041f63197f710aa85edf445f5dc26debbe53f56e..8c17f5be733d8d42da967cf19d603c19b2a09838 100644 --- a/src/docode.c +++ b/src/docode.c @@ -5,7 +5,7 @@ \*/ /**/ #include "global.h" -RCSID("$Id: docode.c,v 1.64 2000/01/04 01:32:04 grubba Exp $"); +RCSID("$Id: docode.c,v 1.65 2000/03/07 21:22:08 hubbe Exp $"); #include "las.h" #include "program.h" #include "language.h" @@ -71,7 +71,7 @@ void do_pop(int x) } } -#define DO_CODE_BLOCK(X) do_pop(do_docode((X),DO_NOT_COPY | DO_POP)); +#define DO_CODE_BLOCK(X) do_pop(do_docode((X),DO_NOT_COPY | DO_POP | DO_DEFER_POP)) int do_docode(node *n,INT16 flags) { @@ -801,8 +801,8 @@ static int do_docode2(node *n,int flags) return 1; } - case F_COMMA_EXPR: case F_ARG_LIST: + case F_COMMA_EXPR: tmp1=do_docode(CAR(n),flags & ~WANT_LVALUE); tmp1+=do_docode(CDR(n),flags); return tmp1; diff --git a/src/docode.h b/src/docode.h index f249782b39e9f2303fdfc1547663be14690b4be6..f2e2beb8bc6f582bd7fae2a4abae5a14e045f39e 100644 --- a/src/docode.h +++ b/src/docode.h @@ -5,7 +5,7 @@ \*/ /* - * $Id: docode.h,v 1.7 1998/05/25 10:38:45 hubbe Exp $ + * $Id: docode.h,v 1.8 2000/03/07 21:22:08 hubbe Exp $ */ #ifndef DOCODE_H #define DOCODE_H @@ -15,6 +15,7 @@ #define DO_POP 4 #define DO_INDIRECT 8 #define DO_LVALUE_IF_POSSIBLE 16 +#define DO_DEFER_POP 32 #define WANT_LVALUE (DO_LVALUE | DO_INDIRECT)