[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [bug-gawk] gawk internal error on $i++
From: |
Aharon Robbins |
Subject: |
Re: [bug-gawk] gawk internal error on $i++ |
Date: |
Mon, 07 Oct 2013 22:06:24 +0300 |
User-agent: |
Heirloom mailx 12.5 6/20/10 |
Hi Ed.
> Date: Mon, 07 Oct 2013 08:17:48 -0500
> From: Ed Morton <address@hidden>
> To: address@hidden
> CC: Arnold Robbins <address@hidden>
> Subject: gawk internal error on $i++
>
> On cygwin on Windows 7:
>
> $ awk 'BEGIN{ $i++ = 3; print i }'
> awk: cmd. line:1: fatal: internal error line 5032, file: awkgram.y
>
> $ awk --version
> GNU Awk 4.1.0, API: 1.0 (GNU MPFR 3.1.2, GNU MP 5.1.2)
>
> $ bash --version
> GNU bash, version 4.1.11(2)-release (x86_64-unknown-cygwin)
Thanks for the report.
Yes, it's a bug. The following patch handles this specific case and
also improves the error message for "the next time".
I will push this in the next day or two.
Arnold
------------------------------------------
diff --git a/awkgram.y b/awkgram.y
index f0ff4f0..2cfffae 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -5028,8 +5028,13 @@ mk_assignment(INSTRUCTION *lhs, INSTRUCTION *rhs,
INSTRUCTION *op)
case Op_push_array:
tp->opcode = Op_push_lhs;
break;
+ case Op_field_assign:
+ yyerror(_("cannot assign a value to the result of a field
post-increment expression"));
+ break;
default:
- cant_happen();
+ fatal(_("internal error: mk_assignment received `%s' opcode"),
+ opcode2str(tp->opcode));
+ break;
}
tp->do_reference = (op->opcode != Op_assign); /* check for
uninitialized reference */