From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5514 invoked by alias); 5 Aug 2015 20:41:38 -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: 35998 Received: (qmail 12616 invoked from network); 5 Aug 2015 20:41:36 -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=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=rFWNkYrh94j5PjNb8BPkyG2Es61XaFDb2Mhy2Wny+t0=; b=YkUBSgdFOy5TAKF66Hl79ng45COGf20+BD3n5sJyyxDfZrcM30SbC/x6SEzCEKk/0I lOe+P5BCXjLypWCCVJoq76vlVRKn0M0jw8zrUZmomMD12sX88VxVicwnMhyginKq4TrQ mQJpfj7gCIB0eqdq+SoVM5Uo1DaNet7nUyl0vSIXpV7x+meUasZnCvWnj636/ulOSDvz 8hv+d6DQd4EwZopxVn/AXe79Rwgkxwm2KesCR+yP+gon7dTP4kkqW3uhhRvaE50FhTfr eXUeq8xVAWusihf4mvOvL1NgsasIcWgMT6ihHRLTnjEIvby3GEliNIQKeFJKVi5l/ovd QHXQ== MIME-Version: 1.0 X-Received: by 10.50.56.10 with SMTP id w10mr1485746igp.3.1438807293414; Wed, 05 Aug 2015 13:41:33 -0700 (PDT) In-Reply-To: <150805130412.ZM7660@torch.brasslantern.com> References: <150805130412.ZM7660@torch.brasslantern.com> Date: Wed, 5 Aug 2015 22:41:33 +0200 Message-ID: Subject: Re: typeset -T crash From: Mikael Magnusson To: Bart Schaefer Cc: zsh workers Content-Type: text/plain; charset=UTF-8 On Wed, Aug 5, 2015 at 10:04 PM, Bart Schaefer wrote: > On Aug 5, 7:59pm, Mikael Magnusson wrote: > } Subject: typeset -T crash > } > } typeset -T i j k; typeset -T j i k > > Something like this? Well, I suppose just checking tdp there works, but should we be getting there at all? The error message also seems wrong since while the array is already tied, we're trying to tie it as a scalar to its tied scalar passed in the array position... (And in case anyone overlooked it, the i and j are swapped in the above command, I could probably have picked better letters). > diff --git a/Src/builtin.c b/Src/builtin.c > index a08a7d4..b32d679 100644 > --- a/Src/builtin.c > +++ b/Src/builtin.c > @@ -2680,10 +2680,15 @@ bin_typeset(char *name, char **argv, LinkList assigns, Options ops, int func) > */ > struct tieddata *tdp = (struct tieddata*)pm->u.data; > /* Update join character */ > - tdp->joinchar = joinchar; > - if (asg0.value.scalar) > - setsparam(asg0.name, ztrdup(asg0.value.scalar)); > - return 0; > + if (tdp) { > + tdp->joinchar = joinchar; > + if (asg0.value.scalar) > + setsparam(asg0.name, ztrdup(asg0.value.scalar)); > + return 0; > + } else { > + zwarnnam(name, "can't tie already tied array: %s", > + asg0.name); > + } > } else { > zwarnnam(name, "can't tie already tied scalar: %s", > asg0.name); -- Mikael Magnusson