Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm
Precedence: bulk
X-No-Archive: yes
List-Id: Zsh Workers List <zsh-workers.zsh.org>
List-Post: <mailto:zsh-workers@zsh.org>
List-Help: <mailto:zsh-workers-help@zsh.org>
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham
	autolearn_force=no version=3.4.0
X-AuditID: cbfec7f5-f79b16d000005389-c6-5699151c05d3
Date: Fri, 15 Jan 2016 15:49:44 +0000
From: Peter Stephenson <p.stephenson@samsung.com>
To: zsh workers <zsh-workers@zsh.org>
Subject: Re: [PATCH] typeset: set $? on incidental error
Message-id: <20160115154944.716a03da@pwslap01u.europe.root.pri>
In-reply-to: <5699082D.4040105@gmx.com>
References: <20160114001336.GA11173@tarsus.local2> <56973114.90807@gmx.com>
 <20160115062645.GB12223@tarsus.local2>
 <CAHYJk3QLCCVmZf4efzQgxs3haKv2mssQk3cGQXd5fm7DK7dgGg@mail.gmail.com>
 <5699082D.4040105@gmx.com>
Organization: Samsung Cambridge Solution Centre
X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu)
MIME-version: 1.0
Content-type: text/plain; charset=US-ASCII
Content-transfer-encoding: 7bit
X-Brightmail-Tracker:
 H4sIAAAAAAAAA+NgFrrILMWRmVeSWpSXmKPExsVy+t/xy7oyojPDDO7e57I42PyQyYHRY9XB
	D0wBjFFcNimpOZllqUX6dglcGdMOtTMWbOOsmHpIqoHxAnsXIyeHhICJxMp5rUwQtpjEhXvr
	2boYuTiEBJYySpxYsIAZwpnBJPF0fiMrhHOOUeLMpO1QZWcZJQ49/QHWzyKgKnGtazsriM0m
	YCgxddNsRhBbBCje/P0fC4gtLGAhceHkNbAaXgF7iXfPb4PZnALqElu/XoDacINR4s+/E2AJ
	fgF9iat/P0EdaC8x88oZRohmQYkfk++BDWUW0JLYvK2JFcKWl9i85i0ziC0ENPTG3d3sExiF
	ZyFpmYWkZRaSlgWMzKsYRVNLkwuKk9JzjfSKE3OLS/PS9ZLzczcxQgL66w7GpcesDjEKcDAq
	8fD+4JwRJsSaWFZcmXuIUYKDWUmE94HwzDAh3pTEyqrUovz4otKc1OJDjNIcLErivDN3vQ8R
	EkhPLEnNTk0tSC2CyTJxcAKjY9KJe5tWXw382eMTcseFZcl8mfN6hz+ETbuR9MR84fZs7yBd
	h5usF7OCDv8s5bJhkp13gUHni6KjdLyi5NfSb6f8SyZm6HpJrH/ssCJbWLV07b3OjI66ZzfO
	1yrcWS3Lu6X57B/1yKn16wRc1sZVL+YUdts8dZXjJ7fMmy/leVobTBL52GdfUmIpzkg01GIu
	Kk4EANgU9DFkAgAA
X-Seq: zsh-workers 37646

On Fri, 15 Jan 2016 09:54:37 -0500
Eric Cook <llua@gmx.com> wrote:
> But typeset should exit > 0 when it does fail to assign a parameter.

This looks about the minimal fix for this.

This is already a hard error, so will cause other stuff later in the
command to fail, however the error wasn't propagated properly within the
command handler.

pws

diff --git a/Src/builtin.c b/Src/builtin.c
index e1a7990..dd20f9e 100644
--- a/Src/builtin.c
+++ b/Src/builtin.c
@@ -2213,6 +2213,8 @@ typeset_single(char *cname, char *pname, Param pm, UNUSED(int func),
 				 mkarray(NULL), 0)))
 		return NULL;
 	}
+	if (errflag)
+	    return NULL;
 	pm->node.flags |= (on & PM_READONLY);
 	if (OPT_ISSET(ops,'p'))
 	    paramtab->printnode(&pm->node, PRINT_TYPESET);
diff --git a/Test/B02typeset.ztst b/Test/B02typeset.ztst
index 681fe73..d6d2421 100644
--- a/Test/B02typeset.ztst
+++ b/Test/B02typeset.ztst
@@ -706,3 +706,8 @@
 >typeset -a array=( '' two '' four )
 >typeset -a array=( one '' three )
 >no really nothing here
+
+  readonly isreadonly=yes
+  typeset isreadonly=still
+1:typeset returns status 1 if setting readonly variable
+?(eval):2: read-only variable: isreadonly

