From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from zero.zsh.org (zero.zsh.org [IPv6:2a02:898:31:0:48:4558:7a:7368]) by inbox.vuxu.org (Postfix) with ESMTP id 0044828554 for ; Sun, 3 Mar 2024 06:34:48 +0100 (CET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1709444088; b=nghm2C53mvLZKWqfpKALXawPUIgsb8Qs2s+M/xQ6T64ocoqOf+foi2Mwr5ptxdGefG9vo26fvZ b/7DyKAqPnUuchVm7l9MGM7pUfeXhidTX+DDEnTsMylKdSeHXtoMQdZswgFVE8z6gOV9Qh7+lY DgkUKKvtp04TKAwB0aFC26ckxKtikYJ2uU91onq5psdYFttlvwBMqI/IxEza7z/pTD7dIc9C5N uvwKBXrZ2JX8aTLMwmuAIYoNzO3s67MjWlyutoR9JCp/uTpSVhIsqX7jW+Hsgj4NzwUdlenkFC Z3vLuWZ0pLMetmdr1rzVwSu48RGLmx77HT6FIlQpMibUKg==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f54.google.com) smtp.remote-ip=209.85.218.54; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 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=1709444088; bh=VsNgSTpXkyCP2kjj/JcQOWxJ+1k1C+JsXLEZKIEAEo0=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Transfer-Encoding:Content-Type:Cc:To:Subject: Message-ID:Date:From:In-Reply-To:References:MIME-Version:DKIM-Signature: DKIM-Signature; b=COOaokS40vybOlf6x810n9FQm41HBmmup40QST4JnQtYfF1L3arZG+r8lBzLEu1DEhrnSLw3nF 4SrjLrnE6yDDbon13z3JqL4DmrB1cA2Ghh05Nrc5TkrF0vs9YC4J+jSUQWfHTu0epOCuoFYvYi q08gm6EI5INfA9pBtiOgz7t6kiZLkp/o3ltkZROL85GmVjnRad/FfPF2Cjb+1C8G4V9hlvT0Bj IGS42cPV3CJW6zXQAkl0nl3mkCKAzPJFwBxSSWd02Iiakc7XCGe9Ue2cqU345CsKUzjVOo5Xpj Un2+YCk4YHHgFE7Umi/fbyIXwK3QXjcduvwjEZQT7hluGQ==; 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-Transfer-Encoding: Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References: MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=Ek5LnDCjf8Hr15aX9GEQWe3+xGWLssBzuKwsNSv0k6c=; b=fMztMLdUMC/ivGLYyNxtnR+A2y dAb1ypRzH54RFYeEkepzduH17sUxZ/8Ev8s5S73jdxR1PYbcwamQWZWChiUKv7ugieT/padMzVi/T fMrLE33yaX5xV1+CM2d47CC1nCY/xYwZGc/zXbdBab0R7vSNoF380t8AIPxU9upju6WH9hOHAf7RO zeRfKHndnm7NG7extI3KgBOiM683RKYF4m61//nMUgpU+zD+GaBPXn+QwVeIQLBodt/BxMrae0ur5 /l3zzkUPXUl5AeIAzAx4tTk5TTv3DrVIIANNBh3/fh0dL6oXow4UC+kw6++KgDo0mt4Z1LiV5aY25 A2OGM74w==; Received: by zero.zsh.org with local id 1rgeUq-0002qd-7g; Sun, 03 Mar 2024 05:34:48 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f54.google.com) smtp.remote-ip=209.85.218.54; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ej1-f54.google.com ([209.85.218.54]:50608) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1rgeUD-0002Vt-5s; Sun, 03 Mar 2024 05:34:10 +0000 Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a28a6cef709so559495566b.1 for ; Sat, 02 Mar 2024 21:34:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1709444048; x=1710048848; darn=zsh.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Ek5LnDCjf8Hr15aX9GEQWe3+xGWLssBzuKwsNSv0k6c=; b=DY6ZZZ15uISJwOEF3JSmWsOj52EJdbWt8PpJX0QfXb2tU5kC1OMIr6GzrIFmt2k7HS mkufykdJ6yCo5+XEVGA6UBymzeUu7T08KcvqnB5m9ZF4jWLtSFCxPcqqUk0TGe3MYnSx m4W+mfnV/jdRdPsSDOI6kLeDoBfyT1LixXpN01nDWM8eSnyLqNXNtJI8A+j1RBpJNGTr RKMf/CzOgUAovpZhxFs5GqNyRy6W0i0P9yppD1v+PgsZKDAX5vABpwpNKE9zcRcwEEYu T3L0uWGbzaBxoTCdfA/A9eeB4hSr0EcBwDCdT4UOFYeEm8ly0fFB1MZ+SNIUzXfjh3Xr Ic5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709444048; x=1710048848; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ek5LnDCjf8Hr15aX9GEQWe3+xGWLssBzuKwsNSv0k6c=; b=EMgvy8/Z7Wv7ksR9oGt3aeo0LyGsU7sfbmy8jMyWBf7hei/cDOXI34dDmAe/TgMXOh NQWUOIdkv0dPke2UetkFNRDtISiWNnJCQABcFWhtN+gH+Bewa/69Q9fATuCRu/lGK8Rn mhI6l4hWp8c4ud54NSKfLaa5TwnPzODczb1w0xFd9lnNnyFFXOs4EYPRFI/KS+uFhQWj Pf8NaRLwFnnckugJlb46Fudz2CZ9yobbp+ZeM7tfc3UY3O+eeV3cuG6GYDcYMGwMC2q5 kLRhbCmkHFstMxBl+2E7+4ngjDIyVAjoegSOYdFRP/7iR0RV0RhAYFuLwiMhPEVwjZFT fwrQ== X-Gm-Message-State: AOJu0Yz+gbSfxZ2bqeGuRsvJ+KkFauB5RTRf9yPkq2+JAAR83TtHL2Ge rp7h1tR9mrZl5dV9iu418wWhmAe6s61Vf21vRLCEU/kuj0NtwvIx7MTXal0uTMKHs7Y2JVmyI1B feBv/qqeuTaGsfcaP9Is3S2mr77tiaqldhFxF X-Google-Smtp-Source: AGHT+IEEAkoTFOe1tyl/G2JbwbZndghuPA7lGe06KTOVXU0XLfLH2/VIeyxyopEKVOTez2c54ZVqYb8xLX8JukYXgFM= X-Received: by 2002:a17:906:6b8c:b0:a45:2865:3fe1 with SMTP id l12-20020a1709066b8c00b00a4528653fe1mr143150ejr.42.1709444048355; Sat, 02 Mar 2024 21:34:08 -0800 (PST) MIME-Version: 1.0 References: <5A8A5063-D43C-4AD0-A03E-0A5E84259FFA@kba.biglobe.ne.jp> In-Reply-To: From: Bart Schaefer Date: Sat, 2 Mar 2024 21:33:57 -0800 Message-ID: Subject: Re: D04parameter.ztst crashes if USE_MMAP is not defined To: Jun T Cc: zsh-workers@zsh.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Seq: 52652 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: On Fri, Mar 1, 2024 at 1:57=E2=80=AFAM Jun T = wrote: > > Why (PM_TYPE(v->pm->node.flags) =3D=3D PM_ARRAY) is true here? > I believe the parameter here is 'string'. But didn't we unset it? Thanks, this was the needed clue. In stdunsetfn: 3903 if ((pm->node.flags & (PM_SPECIAL|PM_TIED)) =3D=3D PM_TIED) { 3904 if (pm->ename) { 3905 zsfree(pm->ename); 3906 pm->ename =3D NULL; 3907 } 3908 pm->node.flags &=3D ~PM_TIED; 3909 } 3910 pm->node.flags |=3D PM_UNSET; > So even with mmap, the parameter 'string' is not removed from paramtab...= ? No, it isn't. It's just marked PM_UNSET. Then back in unsetparam_pm: 3811 if (oldpm && !altpm->level) { 3812 oldpm->old =3D NULL; 3813 /* fudge things so removenode isn't called */ 3814 altpm->level =3D 1; 3815 } 3816 unsetparam_pm(altpm, 1, exp); Calling unsetparam_pm() on the scalar altpm ends up calling the setfn of the array name again, which clears the PM_UNSET flag that was applied at line 3910. 3819 zsfree(altremove); 3820 if (!(pm->node.flags & PM_SPECIAL)) 3821 pm->gsu.s =3D &stdscalar_gsu; We change the gsu pointer but not the parameter flags. Then: 3825 * If this was a local variable, we need to keep the old 3826 * struct so that it is resurrected at the right level. 3827 * This is partly because when an array/scalar value is set 3828 * and the parameter used to be the other sort, unsetparam() 3829 * is called. Beyond that, there is an ambiguity: should 3830 * foo() { local bar; unset bar; } make the global bar 3831 * available or not? The following makes the answer "no". 3836 if ((pm->level && locallevel >=3D pm->level) || 3837 (pm->node.flags & (PM_SPECIAL|PM_REMOVABLE)) =3D=3D PM_SPECIAL) 3838 return 0; This should fix it: diff --git a/Src/params.c b/Src/params.c index 064dbd2bc..e83e4aa5e 100644 --- a/Src/params.c +++ b/Src/params.c @@ -3813,12 +3813,15 @@ unsetparam_pm(Param pm, int altflag, int exp) /* fudge things so removenode isn't called */ altpm->level =3D 1; } - unsetparam_pm(altpm, 1, exp); + unsetparam_pm(altpm, 1, exp); /* This resets pm to empty */ + pm->node.flags |=3D PM_UNSET; /* so we must repeat this */ } zsfree(altremove); - if (!(pm->node.flags & PM_SPECIAL)) + if (!(pm->node.flags & PM_SPECIAL)) { pm->gsu.s =3D &stdscalar_gsu; + pm->node.flags &=3D ~PM_ARRAY; + } } /* diff --git a/Test/D04parameter.ztst b/Test/D04parameter.ztst index 69a4fd3ec..0e2a04eb5 100644 --- a/Test/D04parameter.ztst +++ b/Test/D04parameter.ztst @@ -1222,6 +1222,7 @@ typeset -T STRING string print $STRING $string unset string + typeset -p string STRING=3Dx:y:z print $STRING $string STRING=3Da:b