From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from euclid.skiles.gatech.edu (list@euclid.skiles.gatech.edu [130.207.146.50]) by melb.werple.net.au (8.7.5/8.7.3/2) with ESMTP id MAA17102 for ; Wed, 10 Jul 1996 12:43:55 +1000 (EST) Received: (from list@localhost) by euclid.skiles.gatech.edu (8.7.3/8.7.3) id WAA02968; Tue, 9 Jul 1996 22:35:45 -0400 (EDT) Resent-Date: Tue, 9 Jul 1996 22:35:45 -0400 (EDT) From: Zoltan Hidvegi Message-Id: <199607100233.EAA02866@hzoli.ppp.cs.elte.hu> Subject: Re: Bug Report: Env Vars and shell functions To: pws@ifh.de (Peter Stephenson) Date: Wed, 10 Jul 1996 04:33:47 +0200 (MET DST) Cc: zsh-workers@math.gatech.edu In-Reply-To: <199607081249.OAA09298@hydra.ifh.de> from Peter Stephenson at "Jul 8, 96 02:49:18 pm" X-Mailer: ELM [version 2.4ME+ PL17 (25)] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Resent-Message-ID: <"WRpWc3.0.Ik.0Snun"@euclid> Resent-From: zsh-workers@math.gatech.edu X-Mailing-List: archive/latest/1596 X-Loop: zsh-workers@math.gatech.edu Precedence: list Resent-Sender: zsh-workers-request@math.gatech.edu There is still a bug here: % bug () { : } % export FOO=foo % FOO=bar bug % printenv FOO bar The patch below hepefully fixes that. Zoltan *** Src/exec.c 1996/07/10 02:15:42 2.55 --- Src/exec.c 1996/07/10 02:15:50 *************** *** 1696,1701 **** --- 1696,1706 ---- paramtab->removenode(paramtab, s); addlinknode(*remove_p, s); addlinknode(*restore_p, pm); + if ((pm->flags & PM_EXPORTED) && pm->env) { + delenv(pm->env); + zsfree(pm->env); + pm->env = NULL; + } } } else { addlinknode(*remove_p, s); *************** *** 1721,1728 **** if (restorelist) { /* restore saved parameters */ ! while ((pm = (Param) getlinknode(restorelist))) paramtab->addnode(paramtab, pm->nam, pm); freelinklist(restorelist, 0); } } --- 1726,1736 ---- if (restorelist) { /* restore saved parameters */ ! while ((pm = (Param) getlinknode(restorelist))) { paramtab->addnode(paramtab, pm->nam, pm); + if (pm->flags & PM_EXPORTED) + pm->env = addenv(pm->nam, getsparam(pm->nam)); + } freelinklist(restorelist, 0); } }