Author: jilles
Date: Wed May  4 22:12:22 2011
New Revision: 221463
URL: http://svn.freebsd.org/changeset/base/221463

Log:
  sh: Apply set -u to variables in arithmetic.
  
  Note that this only applies to variables that are actually used.
  Things like (0 && unsetvar) do not cause an error.
  
  Exp-run done by: pav (with some other sh(1) changes)

Added:
  head/tools/regression/bin/sh/expansion/set-u3.0   (contents, props changed)
Modified:
  head/bin/sh/arith_yacc.c

Modified: head/bin/sh/arith_yacc.c
==============================================================================
--- head/bin/sh/arith_yacc.c    Wed May  4 22:02:33 2011        (r221462)
+++ head/bin/sh/arith_yacc.c    Wed May  4 22:12:22 2011        (r221463)
@@ -97,6 +97,8 @@ static arith_t arith_lookupvarint(char *
        arith_t result;
 
        str = lookupvar(varname);
+       if (uflag && str == NULL)
+               yyerror("variable not set");
        if (str == NULL || *str == '\0')
                str = "0";
        errno = 0;

Added: head/tools/regression/bin/sh/expansion/set-u3.0
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ head/tools/regression/bin/sh/expansion/set-u3.0     Wed May  4 22:12:22 
2011        (r221463)
@@ -0,0 +1,6 @@
+# $FreeBSD$
+
+set -u
+unset x
+v=$( (eval ': $((x))') 2>&1 >/dev/null)
+[ $? -ne 0 ] && [ -n "$v" ]
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to