From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 9103 invoked from network); 1 Apr 2022 18:24:31 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 1 Apr 2022 18:24:31 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1648837471; b=lXnlo1z1LqsdB4TR0a6wZswsN78NoIdKu1FIApszRatVtVGIxXt8nFTWmFAowBsCw78QfE0liZ 6LAh1yopyP4IRLltgmVSmvwiPFYzJpalp7vrBH+8WsvR0OM7ZgdeZUChPx/Ug//15J/FGxnlQs 8ccPjflxsy3/c9En3vtG3cg0od/m74kOCZf5A+ApV5Ep+Ni7ojRJ2IMZeLqbjis3f0brj0PzYY cdSha/KF9LhHhJP9NsLJQNMdTKURI8LPmm0Nu2O5lWZ1nalPSPE6Lw53rxR5NzGY6RHO1c5YSf ZTgPwSBf/tvLHey94Dm3A4j3vN8bUgt1vM/CGJ/dombNZg==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-lf1-f50.google.com) smtp.remote-ip=209.85.167.50; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1648837471; bh=bx+rANUAklJVEJbGz+nXegm+y5G1bQYgUVDCQ9EwdpE=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:DKIM-Signature:DKIM-Signature; b=ZN4w59h2nrA7/YRE29Sc0w1nzBVx3MPGp3973Tj39HVRH0IlxHMwmxtuLX8nQa9hta3OxpwRUJ uL6YhVEf/GY7QTrrUA0FjmGvDZPkb5KpHg5XPXQwDP48k1XWx+KGWwtSU6CeBQrm8dtdxitpQt oc7PHQsC3jaETRjAMdfCBkWyIXBbRewnueVJL93lSf04N55nuQfYIB4rk/sHTlEsuAhko9wtZA asf1QUCBFAqEun9iQvyPOdRA4YgtioShkhdeQKJGaJ9cSF+6PnaBVWJmL6QBsCsKlWVIPck7p6 Qh8qgqG9APn8WTLFDm+cW2cyCum5spr2Yv3uQeLh2xOmPw==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:Cc:To:Subject:Message-ID :Date:From:In-Reply-To:References:MIME-Version:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=rEhd9uKRcGt/xpLWQbvBfW8CrMmb12+/K5ZnzIbb7JI=; b=EeupPDo7Owh2nyRus10zf0gh9W VOzn7VxUdvxkr6pTAjvydp/CQzFWnJtPA5BtKP2yxxbi58ICPFzXx75TxVGlRG2+lLBchixbmHL21 uugHfd3oLnY00MFXi/yGiH/qF3RbanaGHpHhNh9yeXsLfkp3z8a2PCH3y3IAIxULCI1tlgsdUlwVB 7pgrDBL1OqZYbXVPgQVO/8DZ+4XwB13J7EeCmiqxCMFzldfbJU4ZA6BStRoYAQqy1Qolo/E95HOtN ctQuWhBP6p6mYikeA66QyExzu9nL66ZwIezgq4/hWaW7BpcwIwfZSH0I9f+eRh5ZnyiagPWBT7bTt moL069Gw==; Received: from authenticated user by zero.zsh.org with local id 1naLwi-000L0K-2w; Fri, 01 Apr 2022 18:24:28 +0000 Authentication-Results: zsh.org; iprev=pass (mail-lf1-f50.google.com) smtp.remote-ip=209.85.167.50; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-lf1-f50.google.com ([209.85.167.50]:39660) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1naLw9-000Kem-GD; Fri, 01 Apr 2022 18:23:54 +0000 Received: by mail-lf1-f50.google.com with SMTP id y36so3547378lfa.6 for ; Fri, 01 Apr 2022 11:23:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20210112.gappssmtp.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=rEhd9uKRcGt/xpLWQbvBfW8CrMmb12+/K5ZnzIbb7JI=; b=oMMubmroAmy5/PIj8GatuCljdttGpTDTZciyrvXsqfL9f2RtHF+8kLwnguDZz59+qX FI9vBrkynvLxT/2yeDmq5hy9wDzNC4mT4fg7IXQq1QdD/yaeVLbPCpmI3TNMWH5KRt95 hxYrCBB2tr3++HgCogdBrjVPFky5YkLiY+qA99vYFxuKMjHUA6Szj4LwMXkb2t+Sm8DD mDoGywoF2A1IYebn0uvIvqOkw/TJo5oPmn5EjCu7vb/1IBKjgBxMsGAWg4aBS1GL2D2m RQi2wFPzDnUfFl8b553uhmtQMCcQiQMSBIVZswIHTt9a9tFAmqQaQQlo2NqvM8haA7+n BR7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=rEhd9uKRcGt/xpLWQbvBfW8CrMmb12+/K5ZnzIbb7JI=; b=Kod2ENMoQGo42/8A3Mi8n7IwZlnFDEciN4T+DOyBBKJk9DyEGzitSMvys4I0nBUhcU 32JriSHr35CIPkGzo6ANbLYP6Xq3Oy2oTFwkHEFFaOwit9Kl4rRLhNHjRS2xcxG7DaYx DbI9J9eLQMW4NpnoQOGys0uPQ39xyc1gdbZl7Zu3FeIzI4/cXtuN3+TLBDYsioZAasjt 2iwKXz9CLuApm6ujjhnky1JLzn+m345LMFGeAKJdroB24ueTeVhXZl7MIEsuqdH4boSn zhb9ea0kNeyTNa+ZWVgSy1BEhXkIbZ/6ueKUbunVKrM4WvBynILKMPWJOa3Ks7py2wJZ 0XQQ== X-Gm-Message-State: AOAM531QoaqfAFCsqWSMAIW5hCcCcIutV8fuoEFfxPzoCAId7NyOSNs5 ntcAe+WaldjN2fL8DvCP4+/LBM32djCTjDXfqrNgJA== X-Google-Smtp-Source: ABdhPJy/OxuOzL0XpZxEzSFtNhPxxwh4AU8vdLwttfWNqeU2crHxCo4/jUrXO9qk0yC01l0lIihNTubseHb7vbjUAH4= X-Received: by 2002:ac2:514f:0:b0:44a:2445:4a20 with SMTP id q15-20020ac2514f000000b0044a24454a20mr14486793lfd.53.1648837432595; Fri, 01 Apr 2022 11:23:52 -0700 (PDT) MIME-Version: 1.0 References: <1514882387.357077.1640002234148@mail2.virginmedia.com> <20220228.222457.2128269761925169168.enometh@meer.net> <20220401.075520.1210015109905370739.enometh@meer.net> In-Reply-To: From: Bart Schaefer Date: Fri, 1 Apr 2022 11:23:41 -0700 Message-ID: Subject: Re: PATCH: pattern incremental search To: Madhu Cc: =?UTF-8?Q?Lawrence_Vel=C3=A1zquez?= , Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000769f9505db9be194" X-Seq: 49955 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: --000000000000769f9505db9be194 Content-Type: text/plain; charset="UTF-8" /* patmatchlen returns metafied length, as we need */ On Thu, Mar 31, 2022 at 8:49 PM Bart Schaefer wrote: > > The following appears to fix the crash problem. I don't know what > else the rest of the patch in workers/49781 accomplishes. Hmm, sorry ... that fixes the crash when there is no match on the search, but there is still a crash when the search does begin to match something. I note this commentary difference from the MULTIBYTE to not-so case, which I hope is correct: - /* patmatchlen returns unmetafied length in this case */ + /* patmatchlen returns metafied length, as we need */ Also in the MULTIBYTE branch, we have declared two "char *mpos" in nested scopes, and I can't immediately tell whether that's a bug waiting to be surfaced or if the not-MULTIBYTE branch just needs to declare the outer mpos. This has a potential effect because there's a call to get_match_ret(&imd, t-s, mpos-s); that is in the outer (loop) scope in the MULTIBYTE branch but the inner ("if (pattrylen(...))") scope in the not-MULTIBYTE branch. I would expect one of those placements must be wrong? Those differences aside, the hunk from workers/49781 that prevents the crash in the successful-match case is this one: @@ -3481,6 +3481,7 @@ igetmatch(char **sp, Patprog p, int fl, int n, char *replstr, * Results from get_match_ret in repllist are all metafied. */ s = *sp; + if (!(fl & SUB_LIST)) { i = 0; /* start of last chunk we got from *sp */ for (nd = firstnode(imd.repllist); nd; incnode(nd)) { rd = (Repldata) getdata(nd); (plus the matching close-brace, of course). SUB_LIST is explained as /* no substitution, return list of matches */ so I'm somewhat concerned that there remains a different way to enter this code that is still going to crash it, but I don't know how to force that path. Anyway, a shorter but equivalent (requires no re-indentation) fix is included in the patch below. I have not attempted to resolve the "mpos" question. I did pull in a couple of what appear to be optimizations (early loop break) from the MULTIBYTE code. --000000000000769f9505db9be194 Content-Type: text/plain; charset="US-ASCII"; name="glob-pattern-search.txt" Content-Disposition: attachment; filename="glob-pattern-search.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l1gr43j60 ZGlmZiAtLWdpdCBhL1NyYy9abGUvemxlX3JlZnJlc2guYyBiL1NyYy9abGUvemxlX3JlZnJlc2gu YwppbmRleCBkOWQ5NTAzZTIuLmM4YzZmNzhjNiAxMDA2NDQKLS0tIGEvU3JjL1psZS96bGVfcmVm cmVzaC5jCisrKyBiL1NyYy9abGUvemxlX3JlZnJlc2guYwpAQCAtMjU1LDcgKzI1NSw5IEBAIGlu dCBjb3N0OwogI2VuZGlmCiAKIHN0YXRpYyBjb25zdCBSRUZSRVNIX0VMRU1FTlQgenJfY3IgPSB7 IFpXQygnXHInKSwgMCB9OworI2lmZGVmIE1VTFRJQllURV9zdXBwb3J0CiBzdGF0aWMgY29uc3Qg UkVGUkVTSF9FTEVNRU5UIHpyX2R0ID0geyBaV0MoJy4nKSwgMCB9OworI2VuZGlmCiBzdGF0aWMg Y29uc3QgUkVGUkVTSF9FTEVNRU5UIHpyX25sID0geyBaV0MoJ1xuJyksIDAgfTsKIHN0YXRpYyBj b25zdCBSRUZSRVNIX0VMRU1FTlQgenJfc3AgPSB7IFpXQygnICcpLCAwIH07CiBzdGF0aWMgY29u c3QgUkVGUkVTSF9FTEVNRU5UIHpyX3pyID0geyBaV0MoJ1wwJyksIDAgfTsKZGlmZiAtLWdpdCBh L1NyYy9nbG9iLmMgYi9TcmMvZ2xvYi5jCmluZGV4IDM0OTg2MjUzMS4uZDRmZmMyMjc0IDEwMDY0 NAotLS0gYS9TcmMvZ2xvYi5jCisrKyBiL1NyYy9nbG9iLmMKQEAgLTMyODYsNiArMzI4Niw3IEBA IGlnZXRtYXRjaChjaGFyICoqc3AsIFBhdHByb2cgcCwgaW50IGZsLCBpbnQgbiwgY2hhciAqcmVw bHN0ciwKIAlyZXR1cm4gMTsKICAgICB9CiAgICAgaWYgKG1hdGNoZWQpIHsKKyAgICAgICAgLyog RGVmYXVsdCBpcyB0byBtYXRjaCBhdCB0aGUgc3RhcnQ7IHNlZSBjb21tZW50IGluIE1VTFRJQllU RSBhYm92ZSAqLwogCXN3aXRjaCAoZmwgJiAoU1VCX0VORHxTVUJfTE9OR3xTVUJfU1VCU1RSKSkg ewogCWNhc2UgMDoKIAljYXNlIFNVQl9MT05HOgpAQCAtMzM1NSw3ICszMzU2LDcgQEAgaWdldG1h dGNoKGNoYXIgKipzcCwgUGF0cHJvZyBwLCBpbnQgZmwsIGludCBuLCBjaGFyICpyZXBsc3RyLAog CSAgICAvKiBsb25nZXN0IG9yIHNtYWxsZXN0IGF0IHN0YXJ0IHdpdGggc3Vic3RyaW5ncyAqLwog CSAgICB0ID0gczsKIAkgICAgaWYgKGZsICYgU1VCX0dMT0JBTCkgewotCQlpbWQucmVwbGxpc3Qg PSBuZXdsaW5rbGlzdCgpOworCQlpbWQucmVwbGxpc3QgPSAoZmwgJiBTVUJfTElTVCkgPyB6bmV3 bGlua2xpc3QoKSA6IG5ld2xpbmtsaXN0KCk7CiAJCWlmIChyZXBsbGlzdHApCiAJCSAgICAqcmVw bGxpc3RwID0gaW1kLnJlcGxsaXN0OwogCSAgICB9CkBAIC0zNDA1LDYgKzM0MDYsOCBAQCBpZ2V0 bWF0Y2goY2hhciAqKnNwLCBQYXRwcm9nIHAsIGludCBmbCwgaW50IG4sIGNoYXIgKnJlcGxzdHIs CiAJCQkgKiB3aGljaCBpcyBhbHJlYWR5IG1hcmtlZCBmb3IgcmVwbGFjZW1lbnQuCiAJCQkgKi8K IAkJCW1hdGNoZWQgPSAxOworCQkJaWYgKHQgPT0gc2VuZCkKKwkJCSAgICBicmVhazsKIAkJCXdo aWxlICh0IDwgbXBvcykgewogCQkJICAgIGlvZmYrKzsKIAkJCSAgICB1bWxlbi0tOwpAQCAtMzQx Miw4ICszNDE1LDEwIEBAIGlnZXRtYXRjaChjaGFyICoqc3AsIFBhdHByb2cgcCwgaW50IGZsLCBp bnQgbiwgY2hhciAqcmVwbHN0ciwKIAkJCX0KIAkJCWJyZWFrOwogCQkgICAgfQorCQkgICAgaWYg KHQgPT0gc2VuZCkKKwkJCWJyZWFrOwogCQl9Ci0JICAgIH0gd2hpbGUgKG1hdGNoZWQpOworCSAg ICB9IHdoaWxlIChtYXRjaGVkICYmIHQgPCBzZW5kKTsKIAkgICAgLyoKIAkgICAgICogY2hlY2sg aWYgd2UgY2FuIG1hdGNoIGEgYmxhbmsgc3RyaW5nLCBpZiBzbyBkbyBpdAogCSAgICAgKiBhdCB0 aGUgc3RhcnQuICBHb29kbmVzcyBrbm93cyBpZiB0aGlzIGlzIGEgZ29vZCBpZGVhCkBAIC0zNDg1 LDYgKzM0OTAsOCBAQCBpZ2V0bWF0Y2goY2hhciAqKnNwLCBQYXRwcm9nIHAsIGludCBmbCwgaW50 IG4sIGNoYXIgKnJlcGxzdHIsCiAJICogUmVzdWx0cyBmcm9tIGdldF9tYXRjaF9yZXQgaW4gcmVw bGxpc3QgYXJlIGFsbCBtZXRhZmllZC4KIAkgKi8KIAlzID0gKnNwOworCWlmIChmbCAmIFNVQl9M SVNUKQorCSAgICByZXR1cm4gMTsKIAlpID0gMDsJCQkvKiBzdGFydCBvZiBsYXN0IGNodW5rIHdl IGdvdCBmcm9tICpzcCAqLwogCWZvciAobmQgPSBmaXJzdG5vZGUoaW1kLnJlcGxsaXN0KTsgbmQ7 IGluY25vZGUobmQpKSB7CiAJICAgIHJkID0gKFJlcGxkYXRhKSBnZXRkYXRhKG5kKTsKQEAgLTM1 MTQsNyArMzUyMSw3IEBAIGlnZXRtYXRjaChjaGFyICoqc3AsIFBhdHByb2cgcCwgaW50IGZsLCBp bnQgbiwgY2hhciAqcmVwbHN0ciwKICAgICBpbWQucmVwbHN0ciA9IE5VTEw7CiAgICAgaW1kLnJl cGxsaXN0ID0gTlVMTDsKICAgICAqc3AgPSBnZXRfbWF0Y2hfcmV0KCZpbWQsIDAsIDApOwotICAg IHJldHVybiAxOworICAgIHJldHVybiAoZmwgJiBTVUJfUkVURkFJTCkgPyAwIDogMTsKIH0KIAog LyoqLwo= --000000000000769f9505db9be194--