From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 8846 invoked by alias); 3 Nov 2016 04:12:23 -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: 39813 Received: (qmail 25416 invoked from network); 3 Nov 2016 04:12:23 -0000 X-Qmail-Scanner-Diagnostics: from mail-ua0-f172.google.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(209.85.217.172):SA:0(0.0/5.0):. Processed in 0.146224 secs); 03 Nov 2016 04:12:23 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=SPF_PASS,T_DKIM_INVALID autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: schaefer@brasslantern.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: pass (ns1.primenet.com.au: SPF record at _netblocks.google.com designates 209.85.217.172 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=from:message-id:date:in-reply-to:comments:references:to:subject :mime-version; bh=okVP1KcQdfoTtJtFg9yG11R64lVoObCBWwWka2pf60A=; b=Arkj/P+EmpvTTkVJT6ERXV1K5cEh8NP2RppaHgqPEGwhkQmun+/jwlaAr1rYLcTzZz YsD8/pdZzKw6bh4/3+y+dmruqWylwAZDCKSftyZvrzIKzclle1cKP5aFeQadxabyQfP9 TFlsesYRGmxc21L3scyC1DM7t9XfChTaJUMkiUOTds0ea9C2xJlPKMfbEDQ7W/6zR8yj dn0y2tsI0pWxzCnRA4Zt1NTispNOrMjfzQuBZ7Ct9ORykZf4maV+8R3/c3WrIPhg1cBD BmUItYwT1UM2QJYQCSdOlXv9srrZVCR4d9/h0l3N3oqOUmyV7XhGTmvEbB0GjB3Hal2x hjqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:message-id:date:in-reply-to:comments :references:to:subject:mime-version; bh=okVP1KcQdfoTtJtFg9yG11R64lVoObCBWwWka2pf60A=; b=Lfht7ov65S9ArzrqJVMTAPwHg30wwk6ZYPysZdiRtGUN9AhmvlnjEjbBZykOJEfxBy bey24BfcX+GTFjroKcdNpKlYZxOKC9wbS6Ri7B4x9hodO/Fhjg23wShelU0svn+KnLW5 z8ltEz34sqqEm0wCF04lspc2RIr4Dovximu498l2tUf/YTYPjFlSEj2J4BeRqzJjJ2Fk RDQzbYMJmYhAdop5R2lsJACEMOS3SedyZ9bA58xTY/Vpq6EAeE2iUD0hQvATnYpRYFbn K+jQc1cli4zv/DVF6El5BC3SySkqYYDAPfNONwG6wN5Pwg7AeiEGflOsxt7C0bAixIta 4Qng== X-Gm-Message-State: ABUngvc5I1h1inH0CdR3HCXNL6UyPmj8ikTDd05enYLveWA6AS5IDOr8Ure42ocD8RFkrQ== X-Received: by 10.176.84.152 with SMTP id p24mr5767408uaa.52.1478146336997; Wed, 02 Nov 2016 21:12:16 -0700 (PDT) From: Bart Schaefer Message-Id: <161102211243.ZM16026@torch.brasslantern.com> Date: Wed, 2 Nov 2016 21:12:43 -0700 In-Reply-To: <11719.1478105483@hydra.kiddle.eu> Comments: In reply to Oliver Kiddle "Re: Bug in ZSH's vi emulation" (Nov 2, 5:51pm) References: <20161005080921.GB26647@raspi> <161005101938.ZM12590@torch.brasslantern.com> <20161102045925.GA6763@fujitsu.shahaf.local2> <11719.1478105483@hydra.kiddle.eu> X-Mailer: OpenZMail Classic (0.9.2 24April2005) To: zsh-workers@zsh.org Subject: Re: Bug in ZSH's vi emulation MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii On Nov 2, 5:51pm, Oliver Kiddle wrote: } } We've also got a separate issue of only lastchar being stuffed into } vichgbuf so repeating, e.g. gU doesn't work. Why is keybuflen only } 1 in startvichange? That, along with what the general point of lastchar } is, has me fairly puzzled. It's because of getkeymapcmd(): if(lastlen != keybuflen) { unmetafy(keybuf + lastlen, &keybuflen); <-- here ungetbytes(keybuf+lastlen, keybuflen); if(vichgflag) vichgbufptr -= keybuflen; keybuf[lastlen] = 0; } Seems like it ought to do the following? Or else use a temporary instead of stomping on keybuflen. diff --git a/Src/Zle/zle_keymap.c b/Src/Zle/zle_keymap.c index 3db4207..b5244b5 100644 --- a/Src/Zle/zle_keymap.c +++ b/Src/Zle/zle_keymap.c @@ -1622,7 +1622,7 @@ getkeymapcmd(Keymap km, Thingy *funcp, char **strp) ungetbytes(keybuf+lastlen, keybuflen); if(vichgflag) vichgbufptr -= keybuflen; - keybuf[lastlen] = 0; + keybuf[keybuflen = lastlen] = 0; } *funcp = func; *strp = str;