summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--Src/builtin.c7
-rw-r--r--Test/B04read.ztst5
3 files changed, 15 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index fddf16222..68aad4aba 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2011-01-07 Peter Stephenson <pws@csr.com>
+ * 28590 (added a comment): Src/builtin.c, Test/B04read.ztst:
+ read builtin should return non-zero status on error.
+
* Mikael: 28585: Completion/Unix/Command/_mkdir: don't set ret=0
when _wanted fails to find any matches.
@@ -14066,5 +14069,5 @@
*****************************************************
* This is used by the shell to define $ZSH_PATCHLEVEL
-* $Revision: 1.5174 $
+* $Revision: 1.5175 $
*****************************************************
diff --git a/Src/builtin.c b/Src/builtin.c
index 411b834e7..a85a49a20 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -5710,7 +5710,12 @@ bin_read(char *name, char **args, Options ops, UNUSED(int func))
}
return 1;
}
- return 0;
+ /*
+ * The following is to ensure a failure to set the parameter
+ * causes a non-zero status return. There are arguments for
+ * turning a non-zero status into errflag more widely.
+ */
+ return errflag;
}
/**/
diff --git a/Test/B04read.ztst b/Test/B04read.ztst
index 2c87aa67a..ad427dc0d 100644
--- a/Test/B04read.ztst
+++ b/Test/B04read.ztst
@@ -88,3 +88,8 @@
print ${#line}
0:read with trailing metafied characters
>24
+
+ (typeset -r foo
+ read foo) <<<bar
+1:return status on failing to set parameter
+?(eval):2: read-only variable: foo