From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by coral.primenet.com.au (8.7.5/8.7.3) with ESMTP id IAA09398 for ; Thu, 19 Sep 1996 08:31:49 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id SAA01646; Wed, 18 Sep 1996 18:18:23 -0400 (EDT) Resent-Date: Wed, 18 Sep 1996 18:18:23 -0400 (EDT) From: Zoltan Hidvegi Message-Id: <199609182212.AAA00950@hzoli.ppp.cs.elte.hu> Subject: Re: two new bugs To: pws@ifh.de (Peter Stephenson) Date: Thu, 19 Sep 1996 00:12:22 +0200 (MET DST) Cc: zsh-workers@math.gatech.edu In-Reply-To: <199609180927.LAA03839@hydra.ifh.de> from Peter Stephenson at "Sep 18, 96 11:27:42 am" X-Mailer: ELM [version 2.4ME+ PL17 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Resent-Message-ID: <"Hl3LX.0.bP.kK7Go"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/2148 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu > Here are two recent bugs, both certainly since 3.0.0, the second very > recent. > > 1) > > % foo[1]=bar > zsh: command not found: foo[1]=bar > > (Did this come with Zoltan's patch to fix the bug that '1foo=bar' > worked like '1=bar'? Unfortunately I've since deleted that.) Yes, it was my patch :-(. Here is a fix for the fix. Note that 1[1]=foo is not an assignment. Zoltan *** Src/lex.c 1996/09/14 03:55:08 2.45 --- Src/lex.c 1996/09/18 22:08:52 *************** *** 859,870 **** } } else if (!sub && peek != ENVSTRING && incmdpos && !bct && !brct) { ! e = 0; ! if (idigit(*tokstr)) ! while (++e < len && idigit(tokstr[e])); ! else ! while (iident(tokstr[e]) && ++e < len); ! if (e == len) { e = hgetc(); if (e == '(' && incmdpos) { *bptr = '\0'; --- 859,875 ---- } } else if (!sub && peek != ENVSTRING && incmdpos && !bct && !brct) { ! char *t = tokstr; ! if (idigit(*t)) ! while (++t < bptr && idigit(*t)); ! else { ! while (iident(*t) && ++t < bptr); ! if (t < bptr) { ! *bptr = '\0'; ! skipparens(Inbrack, Outbrack, &t); ! } ! } ! if (t == bptr) { e = hgetc(); if (e == '(' && incmdpos) { *bptr = '\0';