From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 27385 invoked by alias); 29 Apr 2011 08:44:54 -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: 29108 Received: (qmail 6309 invoked from network); 29 Apr 2011 08:44:48 -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=-1.9 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.1 Received-SPF: none (ns1.primenet.com.au: domain at vinc17.net does not designate permitted sender hosts) Date: Fri, 29 Apr 2011 10:44:44 +0200 From: Vincent Lefevre To: zsh-workers@zsh.org Subject: Re: completion on brace + 4 characters doesn't work Message-ID: <20110429084444.GE5625@prunille.vinc17.org> Mail-Followup-To: zsh-workers@zsh.org References: <20110428111148.GA3109@ypig.lip.ens-lyon.fr> <110428081240.ZM11395@torch.brasslantern.com> <20110428222754.GC5625@prunille.vinc17.org> <20110429003149.GA21935@prunille.vinc17.org> <20110429005909.GB21935@prunille.vinc17.org> <20110429013438.GC21935@prunille.vinc17.org> <110428205657.ZM12615@torch.brasslantern.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <110428205657.ZM12615@torch.brasslantern.com> X-Mailer-Info: http://www.vinc17.net/mutt/ User-Agent: Mutt/1.5.21-6171-vl-r42848 (2011-03-30) On 2011-04-28 20:56:57 -0700, Bart Schaefer wrote: > On Apr 29, 3:34am, Vincent Lefevre wrote: > } Subject: Re: completion on brace + 4 characters doesn't work > } > } With "echo ./{abcd", valgrind complains: > } > } ==13848== Source and destination overlap in strcpy(0x4027532, 0x4027533) > } ==13848== at 0x4C25918: strcpy (mc_replace_strmem.c:311) > } ==13848== by 0xD09D92C: get_comp_string (zle_tricky.c:2016) > > That's this line: > > 2016 strcpy(dbeg, dbeg + len); > > The code there apparently assumes a naive implementation of strcpy() > that goes left-to-right incrementing the source and destination > pointers in lock step. It also assumes that the length of the string is less than len (because the source and the destination may not overlap). The compiler can use this fact to optimize the code. And as this is not true, the generated code may be incorrect. > There are instances of this assumption all > over the place in get_comp_string(). It would not surprise me to > find this assumption made elsewhere in the zsh sources. > > Out of curiosity, does the behavior change if you crank down the > degree of optimization (or up the of debugging) in the compiler flags > when building? For the test with valgrind, zsh was compiled with no optimizations, because I configured it with the option --enable-zsh-debug. Now, the optimization level doesn't affect the use of GCC builtins (there's one for strcpy). -- Vincent Lefèvre - Web: 100% accessible validated (X)HTML - Blog: Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)