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 1908 invoked from network); 13 Aug 2022 00:21:51 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 13 Aug 2022 00:21:51 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1660350111; b=gtH6DZlhSifH+vHY+DsHNPvx0NKwmBIv4bSCONBTM/iH3vAhur5YNTJrLiOQE2/QUR7w1b9prz 3SKP7prEJ9B8vbDnhH2rleciSvHUze5BAR1BkBXC6/S7RhM/ZJAUn46hCES9JXjLT2x/a6Dgue nojLhDUssYhJMu83C1ODKQf4xrmq5wl34ba2VG5vQtt7ugXyFkHacmin8WxYjBw01hbQfdB7Bi kKPUoalIRc57jZ8a+FM1AQ15QfHtzwFa1shZBvf6wGmwpe4xyzsG0F5GfSQOVVEhdRHSmRB6op K+LuSrJab3fg/vl0Q767/U7W5KQ46r2t6l6EaiFyF9JpkA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f49.google.com) smtp.remote-ip=209.85.218.49; 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=1660350111; bh=hCFRMF7zdR++1mornjJGSRPaflBvGtAGjB3Vdnmndwc=; 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=kh0ebtJ1SjjVL6hgg3iksZ+f5v9TyU7dEUer5qHUQA/MRbi8yJp+ITdGrgTI8vfglEv6Vd/aWe qu8+e4zubO1uyQzWVt0IGw7QeA1gcn5sXDbTXoffzMqqvpVgg7OEQ4kP6RXLgt+3ok/5bHJwXW +BBGZG/b+S3r8CxQ71cFYgE0zvV2lqxziU46IsP3H74Kks4ZglwYDke2ImAYTK7VUsh8bi+Cw+ HCq86D4ugHautr2x+3I17olvfJTjVumXwHjU2+qrIVocLPt1IrLpdime6Hbwfro0laytJaJz52 nve6yReL23xwDiRUdVZAKbUJpLGbYWja9AtH0wt6CORnyw==; 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=6DcjdMagKWOmg+pkdSZi3aZRAoXNoZLfEWYjEEG072A=; b=XPKJ5EPXWD4p9tsK29Ko9mmNnK ZnDC8WklLOKrruHlSRAVI0PXBN/BgkOYSwz5E/doJXuw+9+xeQw/JFemXRaceITU/zfbFnzwwYDXO YfRdAWHecI2el5I+W4QerlA9sXkzOReU2K0dN64GUeOVbIr0lo1u8Ih8UHXHRvyoPOLQsR1bDbH56 AkXUnrQ1elrS3JzPjFCWVGufkxf9tC24ehYBuT/m2Wi6JoEGicR5ydRkK+IptJZ4ZqWTWHbFBOsdx hAzhG4XLO5/ZeZWnEock6Io3QsWiZy4lpr9pK9/Bx+mhsrN8DOxYGLWxudic/f6xtZuk/DRc8cyJj 9xSA2Eag==; Received: from authenticated user by zero.zsh.org with local id 1oMeuT-0004r3-8E; Sat, 13 Aug 2022 00:21:49 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f49.google.com) smtp.remote-ip=209.85.218.49; 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-ej1-f49.google.com ([209.85.218.49]:41482) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1oMejq-00042x-RY; Sat, 13 Aug 2022 00:10:51 +0000 Received: by mail-ej1-f49.google.com with SMTP id gk3so4450902ejb.8 for ; Fri, 12 Aug 2022 17:10:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20210112.gappssmtp.com; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc; bh=6DcjdMagKWOmg+pkdSZi3aZRAoXNoZLfEWYjEEG072A=; b=olo+fkmBj2KI8kwDFpfVRoXHtftGZTTbIRFT944qBwrLm0IGmoKo+JglY0BBf+Y1mH 7VPbc2H2tdgS6gE6h+2I2FA8zpQ6rh8Ukd+zpZWUFXIZu1kLjPkqXPCCBirX/gtp7djh jw1ioV3P8zmwO6NVGdSBfFbpdPSm9Bxp4uuXPoIUk/LG2cuubDVREWWbKFq++RCYDrIk uNVJo+lCVjSbjaOwpl2RW/rrIq6Z3W3J+Y0ldOlk2aNUVDXcdirLhJnnb3t8M6YJig2q z6qv9lPkMOhcBMFO701+Z9HHRa6NbRE5Mv7JCyOYsQ/7mqDmKgY1S9Wkd5Y7u0Vvtous F/Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc; bh=6DcjdMagKWOmg+pkdSZi3aZRAoXNoZLfEWYjEEG072A=; b=464VG5COygVKt1VUN+xQB6cEc6yq6aKXjJ/v9SJTrHpLtie02IxDQGtJA8RbuaO98h 7YEc4r7zGM4+83dwhNVAbNJ6lqVftQ/HvKvPx30aMIVH8MlMNeYLYq7/1w7v4h6Y77L5 JmNlhQ7+3xrg731NsGRnwzRmgcTNWcEFN2M95iMaXtyXd4VaE5yhAp3O2ASlJUXzT2i+ mrG5ZnkU964wWjiW3L8kjlAWhnJljFW6WiBumZSVgFx4Vi6hgiJY1c0jUoyJrNX67Y78 bfZvxLtKsTJzDxK/3SfgdLiiC7Kq97QTgn7+j2QaXoTzwzI7r2SySPH2FxU1mZyJ4tkB 1sSg== X-Gm-Message-State: ACgBeo0UzIIZt6H59Q4LvUP0hUWM2NI+SKXP5m+8l0ko1NjnysIWAbva a9LOJQgfVOUdKn3wR1zv9uZ2Q1kxgafthyU4456bVw== X-Google-Smtp-Source: AA6agR5n4epy0t1JAB35BqmSf+HcOT3faettIKXYnTbP/KLj6GNrlwXxs4Sh3meEEl54/w2JOx5GxFEKT+Ie1s/UiHQ= X-Received: by 2002:a17:907:2bd6:b0:730:a2f7:f885 with SMTP id gv22-20020a1709072bd600b00730a2f7f885mr4053156ejc.214.1660349450273; Fri, 12 Aug 2022 17:10:50 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Bart Schaefer Date: Fri, 12 Aug 2022 17:10:39 -0700 Message-ID: Subject: [PATCH] Re: out of memory error after "edit-command-line" To: linuxtechguy@gmail.com Cc: devs Content-Type: multipart/mixed; boundary="0000000000002ff87705e6143bb8" X-Seq: 50473 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: --0000000000002ff87705e6143bb8 Content-Type: text/plain; charset="UTF-8" On Fri, Aug 12, 2022 at 1:18 PM Bart Schaefer wrote: > > However, I can't come up with a minimal test case to invoke the > initial condition. It's not enough just to do e.g. > ${(0A)$( [...] it appears that findsep(&s, NULL, 0) > considers '\203 ' to be a separator (because a null byte is in $IFS ?) > but skipwsep() does not. OK, that's a red herring. The real problem is that itype_end(s, ISEP, 1) is not skipping over the '\203 ' pair in Jim's example, whereas it does in the simple example above. Once this becomes broken, it remains broken -- the simple example starts infinite-looping as well. It seems to come down to this in itype_end(): 4359 case ISEP: 4360 if (!wmemchr(ifs_wide.chars, wc, ifs_wide.len)) 4361 return (char *)ptr; On entry to that case in the simple example, wmemchr() returns nonzero for wc == 0. After edit-command-line, wmemchr() starts returning zero in that case. It appears ifs_wide has been erased. The problem starts here in edit-command-line: # Compute the cursor's position in bytes, not characters. setopt localoptions nomultibyte noksharrays When nomultibyte is set, inittyptab() is called and erases ifs_wide. This is not restored when emulation mode ends and multibyte is re-asserted. The following patch fixes this example, but might only be a partial fix for problems with locally flipping the state of various options (MONITOR, BANGHIST, SHINSTDIN come to mind). I think really we should be looping over the options and calling dosetopt() for each one instead of just memcpy'ing the saved set back on top of the original ... or at least we need a mapping of the subset of options that have extra code associated with a change via setopt. --0000000000002ff87705e6143bb8 Content-Type: text/plain; charset="US-ASCII"; name="localnomultibyte.txt" Content-Disposition: attachment; filename="localnomultibyte.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l6r5491x0 ZGlmZiAtLWdpdCBhL1NyYy9leGVjLmMgYi9TcmMvZXhlYy5jCmluZGV4IGYyOTExODA3Yy4uNzc3 NjNmNTM2IDEwMDY0NAotLS0gYS9TcmMvZXhlYy5jCisrKyBiL1NyYy9leGVjLmMKQEAgLTU5NjIs MTAgKzU5NjIsMTcgQEAgZG9zaGZ1bmMoU2hmdW5jIHNoZnVuYywgTGlua0xpc3QgZG9zaGFyZ3Ms IGludCBub3JldHVybnZhbCkKIAkgICAgc3RpY2t5ID0gZnVuY3NhdmUtPnN0aWNreTsKIAl9IGVs c2UgaWYgKGlzc2V0KExPQ0FMT1BUSU9OUykpIHsKIAkgICAgLyogcmVzdG9yZSBhbGwgc2hlbGwg b3B0aW9ucyBleGNlcHQgUFJJVklMRUdFRCBhbmQgUkVTVFJJQ1RFRCAqLworI2lmZGVmIE1VTFRJ QllURV9TVVBQT1JUCisJICAgIGludCBmbGlwX211bHRpYnl0ZSA9IG9wdHNbTVVMVElCWVRFXTsK KyNlbmRpZgogCSAgICBmdW5jc2F2ZS0+b3B0c1tQUklWSUxFR0VEXSA9IG9wdHNbUFJJVklMRUdF RF07CiAJICAgIGZ1bmNzYXZlLT5vcHRzW1JFU1RSSUNURURdID0gb3B0c1tSRVNUUklDVEVEXTsK IAkgICAgbWVtY3B5KG9wdHMsIGZ1bmNzYXZlLT5vcHRzLCBzaXplb2Yob3B0cykpOwogCSAgICBl bXVsYXRpb24gPSBmdW5jc2F2ZS0+ZW11bGF0aW9uOworI2lmZGVmIE1VTFRJQllURV9TVVBQT1JU CisJICAgIGlmIChmbGlwX211bHRpYnl0ZSAhPSBvcHRzW01VTFRJQllURV0pCisJCWluaXR0eXB0 YWIoKTsKKyNlbmRpZgogCX0gZWxzZSB7CiAJICAgIC8qIGp1c3QgcmVzdG9yZSBhIGNvdXBsZS4g Ki8KIAkgICAgb3B0c1tYVFJBQ0VdID0gZnVuY3NhdmUtPm9wdHNbWFRSQUNFXTsKCg== --0000000000002ff87705e6143bb8--