From eadaf2fef845afdc6b8540af4c558444d8c7315d Mon Sep 17 00:00:00 2001 From: acqn Date: Sun, 21 Feb 2021 16:43:46 +0800 Subject: [PATCH] Fixed deferred post-inc and post-dec in unevaluated context such as 'sizeof(i++)'. --- src/cc65/expr.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/cc65/expr.c b/src/cc65/expr.c index 751014af3..67d64e138 100644 --- a/src/cc65/expr.c +++ b/src/cc65/expr.c @@ -376,6 +376,9 @@ void DoneDeferredOps (void) static void DeferInc (const ExprDesc* Expr) /* Defer the post-inc and put it in a queue */ { + if (ED_IsUneval (Expr)) { + return; + } DeferredOp* Op = xmalloc (sizeof (DeferredOp)); memcpy (&Op->Expr, Expr, sizeof (ExprDesc)); Op->OpType = DOT_INC; @@ -387,6 +390,9 @@ static void DeferInc (const ExprDesc* Expr) static void DeferDec (const ExprDesc* Expr) /* Defer the post-dec and put it in a queue */ { + if (ED_IsUneval (Expr)) { + return; + } DeferredOp* Op = xmalloc (sizeof (DeferredOp)); memcpy (&Op->Expr, Expr, sizeof (ExprDesc)); Op->OpType = DOT_DEC;