From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2889 invoked by alias); 15 Jan 2016 15:49:55 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 37646 Received: (qmail 22391 invoked from network); 15 Jan 2016 15:49:53 -0000 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 To: zsh workers 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> <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 On Fri, 15 Jan 2016 09:54:37 -0500 Eric Cook 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