From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 21165 invoked by alias); 19 May 2011 18:35: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: 29329 Received: (qmail 6654 invoked from network); 19 May 2011 18:35:27 -0000 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) 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 autolearn=ham version=3.3.1 Received-SPF: pass (ns1.primenet.com.au: SPF record at _spf.google.com designates 209.85.220.171 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=OEXAHDwXMW+a9wKCNtJI/QpDnGwHJPNAQDX324kOqyg=; b=V1r4ktTpeRJr22Bgrfjygd6/6kACtAh44qVpSmFnZ9DCqnIZYXVDAAQJtVLKL5ggi6 P8ElptEucXTRyE4dbzMuakCoFgD9b7eLS4fxK0jNz+33PnNQWqS3DSaIivSczBpEgkIQ 1zz81/12zrnnKCkwVfjJa+4hmBVy0H0pGkuHM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=ux8toXLy0VWYEaundzjU3sjekQwvcVEirgpk02QvT2ek2yZt046BRICrLyHHNE2JGJ VJmolYbJ5zHVXiHKLJRBL56d3qoc39dGQzEEmVfzm+tDKbtLWS3NncfDqNjTIjl26Kr5 8sXlqb5Nuz7j15Z7IVu10pDmnXoDSa8Ysy1Fs= MIME-Version: 1.0 In-Reply-To: References: <20110519140215.2879aeeb@pwslap01u.europe.root.pri> Date: Thu, 19 May 2011 20:35:21 +0200 Message-ID: Subject: Re: Next zsh release From: Mikael Magnusson To: Wayne Davison Cc: Bart Schaefer , Peter Stephenson , "Zsh Hackers' List" Content-Type: text/plain; charset=UTF-8 On 19 May 2011 20:17, Wayne Davison wrote: > On Thu, May 19, 2011 at 10:53 AM, Mikael Magnusson wrote: >> Hm, in this line, >> push(setmathvar(mvp,c), mvp->lval, 0); >> isn't it undefined whether setmathvar runs first or mvp->lval is evaluated? > > Yeah, it is. That should probably be changed to this, just for safety's sake: > > c = setmathvar(mvp, c); > push(c, mvp->lval, 0); make check still passes with this change, other than that I'm not sure exactly what math construct this code actually handles. It fails if I comment out the push() though, so it's covered I suppose. --- a/Src/math.c +++ b/Src/math.c @@ -1161,7 +1161,8 @@ op(int what) } if (tp & (OP_E2|OP_E2IO)) { struct mathvalue *mvp = stack + sp + 1; - push(setmathvar(mvp,c), mvp->lval, 0); + c = setmathvar(mvp, c); + push(c, mvp->lval, 0); } else push(c,NULL, 0); return; -- Mikael Magnusson