From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 1044 invoked from network); 24 Apr 2005 16:47:00 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by ns1.primenet.com.au with SMTP; 24 Apr 2005 16:47:00 -0000 Received: (qmail 72313 invoked from network); 24 Apr 2005 16:46:54 -0000 Received: from sunsite.dk (130.225.247.90) by a.mx.sunsite.dk with SMTP; 24 Apr 2005 16:46:54 -0000 Received: (qmail 22186 invoked by alias); 24 Apr 2005 16:46:51 -0000 Mailing-List: contact zsh-workers-help@sunsite.dk; run by ezmlm Precedence: bulk X-No-Archive: yes X-Seq: 21174 Received: (qmail 22172 invoked from network); 24 Apr 2005 16:46:51 -0000 Received: from news.dotsrc.org (HELO a.mx.sunsite.dk) (130.225.247.88) by sunsite.dk with SMTP; 24 Apr 2005 16:46:51 -0000 Received: (qmail 71997 invoked from network); 24 Apr 2005 16:46:51 -0000 Received: from vms048pub.verizon.net (206.46.252.48) by a.mx.sunsite.dk with SMTP; 24 Apr 2005 16:46:47 -0000 Received: from candle.brasslantern.com ([4.11.1.68]) by vms048.mailsrvcs.net (Sun Java System Messaging Server 6.2 HotFix 0.04 (built Dec 24 2004)) with ESMTPA id <0IFG003ADMLXFU06@vms048.mailsrvcs.net> for zsh-workers@sunsite.dk; Sun, 24 Apr 2005 11:46:46 -0500 (CDT) Received: from candle.brasslantern.com (IDENT:schaefer@localhost [127.0.0.1]) by candle.brasslantern.com (8.12.11/8.12.11) with ESMTP id j3OGkidU005804 for ; Sun, 24 Apr 2005 09:46:44 -0700 Received: (from schaefer@localhost) by candle.brasslantern.com (8.12.11/8.12.11/Submit) id j3OGkiLM005803 for zsh-workers@sunsite.dk; Sun, 24 Apr 2005 09:46:44 -0700 Date: Sun, 24 Apr 2005 16:46:43 +0000 From: Bart Schaefer Subject: Re: replacement slowdown In-reply-to: <1050424033218.ZM24729@candle.brasslantern.com> To: zsh-workers@sunsite.dk Message-id: <1050424164643.ZM5802@candle.brasslantern.com> MIME-version: 1.0 X-Mailer: Z-Mail (5.0.0 30July97) Content-type: text/plain; charset=us-ascii References: <20050422232316.GA27665@scowler.net> <1050423031422.ZM3881@candle.brasslantern.com> <20050423031907.GA27233@scowler.net> <1050423160721.ZM4469@candle.brasslantern.com> <20050423162635.GA30862@scowler.net> <1050423171206.ZM5141@candle.brasslantern.com> <20050424003350.A87A28638@pwstephenson.fsnet.co.uk> <1050424004746.ZM24638@candle.brasslantern.com> <1050424033218.ZM24729@candle.brasslantern.com> Comments: In reply to Bart Schaefer "Re: replacement slowdown" (Apr 24, 3:32am) X-Spam-Checker-Version: SpamAssassin 3.0.2 on a.mx.sunsite.dk X-Spam-Level: X-Spam-Status: No, score=-2.6 required=6.0 tests=AWL,BAYES_00 autolearn=ham version=3.0.2 X-Spam-Hits: -2.6 On Apr 24, 3:32am, Bart Schaefer wrote: } } I agree Peter's solution is simpler, but I think it ought to get merged } with my extra METAINC()s and related changes. Here's that patch: Index: Src/glob.c --- ../zsh-forge/current/Src/glob.c Sun Apr 24 09:22:59 2005 +++ Src/glob.c Sun Apr 24 09:41:32 2005 @@ -2293,6 +2293,8 @@ * There's no optimization here. */ for (ioff = uml, t = s + l, umlen = 0; t >= s; t--, ioff--, umlen++) { + if (t > s && t[-1] == Meta) + t--; set_pat_start(p, t-s); if (pattrylen(p, t, s + l - t, umlen, ioff)) { *sp = get_match_ret(*sp, t - s, l, fl, replstr); @@ -2308,7 +2310,7 @@ * move forward along string until we get a match. * * Again there's no optimisation. */ for (ioff = 0, t = s, umlen = uml; t < s + l; - ioff++, t++, umlen--) { + ioff++, METAINC(t), umlen--) { set_pat_start(p, t-s); if (pattrylen(p, t, s + l - t, umlen, ioff)) { *sp = get_match_ret(*sp, t-s, l, fl, replstr); @@ -2336,7 +2338,7 @@ do { /* loop over all matches for global substitution */ matched = 0; - for (; t < s + l; t++, ioff++, umlen--) { + for (; t < s + l; METAINC(t), ioff++, umlen--) { /* Find the longest match from this position. */ set_pat_start(p, t-s); if (pattrylen(p, t, s + l - t, umlen, ioff)) {