Subject: Re: bin/33956: -current /bin/sh possible regression
To: None <gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, njoly@pasteur.fr>
From: David Holland <dholland+netbsd@eecs.harvard.edu>
List: netbsd-bugs
Date: 07/11/2006 18:35:02
The following reply was made to PR bin/33956; it has been noted by GNATS.

From: dholland+netbsd@eecs.harvard.edu (David Holland)
To: current-users@netbsd.org, <j+nbsd@2006.salmi.ch>
Cc: gnats-bugs@netbsd.org
Subject: Re: bin/33956: -current /bin/sh possible regression
Date: Tue, 11 Jul 2006 14:33:52 -0400 (EDT)

 Jukka Salmi <j+nbsd@2006.salmi.ch> wrote:
  > Hmm, this reverts what has been recently [1]changed to fix PR
  > [2]bin/33472...
  > 
  > Cheers, Jukka
  > 
  > [1] http://cvsweb.netbsd.org/bsdweb.cgi/src/bin/sh/expand.c.diff?r1=1.73&r2=1.74
  > [2] http://www.netbsd.org/cgi-bin/query-pr-single.pl?number=33472
 
 Hrm, good point.
 
 *investigates*
 
 This additional patch fixes that bug:
 
 --- expand.c~	2006-07-10 17:56:18.000000000 -0400
 +++ expand.c	2006-07-11 14:15:31.000000000 -0400
 @@ -1035,7 +1035,7 @@
  	 * Some recent clarification of the Posix spec say that it
  	 * should only generate one....
  	 */
 -	if (*start) {
 +	if (*start || inquotes) {
  		sp = (struct strlist *)stalloc(sizeof *sp);
  		sp->text = start;
  		*arglist->lastp = sp;
 
 
 and here's a patch for the regression suite (which doesn't all pass,
 but my hacking hasn't changed that)
 
 --- regress/bin/sh/expand.sh~	2006-05-11 20:05:59.000000000 -0400
 +++ regress/bin/sh/expand.sh	2006-07-11 14:22:21.000000000 -0400
 @@ -27,3 +27,11 @@
  set -- "" ""				# This code triggered the bug.
  got=`echo "$@" | sed 's,$,EOL,'`
  assert_equals "2" " EOL" "$got"
 +
 +# The original fix wasn't quite right, and this triggers that bug.
 +foo() { echo "Testing ${@} fnord"; }
 +got=`foo a`
 +assert_equals "3" "Testing a fnord" "$got"
 +got=`foo a b`
 +assert_equals "3" "Testing a b fnord" "$got"
 +
 
 --- regress/bin/sh/Makefile~	2006-06-16 10:43:17.000000000 -0400
 +++ regress/bin/sh/Makefile	2006-07-11 14:28:46.000000000 -0400
 @@ -10,6 +10,6 @@
  	sh ${.CURDIR}/fsplit.sh
  	sh ${.CURDIR}/here.sh
  	sh ${.CURDIR}/set_e.sh
 -	#sh ${.CURDIR}/expand.sh	# First needs to be fixed.
 +	sh ${.CURDIR}/expand.sh
  
  .include <bsd.prog.mk>
 
 
 -- 
    - David A. Holland / dholland@eecs.harvard.edu