zsh-workers
 help / color / mirror / code / Atom feed
From: "stringfellow.n.d" <stringfe@rmcs.cran.ac.uk>
To: ramos@ih4ess.ih.lucent.com
Cc: zsh-workers@math.gatech.edu
Subject: Re: leftover debugging statements?
Date: Sun, 02 Nov 1997 16:48:58 +0000	[thread overview]
Message-ID: <345CAEFA.EE@rmcs.cran.ac.uk> (raw)
In-Reply-To: <199711012201.QAA13863@ihnns581.ih.lucent.com>

ramos@ih4ess.ih.lucent.com wrote:
> 
> hello,
> 
> Did somebody leave some leftover debugging statements in
> zsh 3.0.5?
> 
> Some assignments to a local (typeset) variable cause
> some garbage to be printed out.
> 
> Example script & output (sorry I don't have time to
> isolate this any further... I hope this is enough to
> jog someone's memory):
> 
> PS1='zsh> '
> 
> zsh> which bug
> bug () {
>         typeset fred
>         fred=NULL
>         typeset sourcefile
>         echo 'Start loop...'
>         for sourcefile in $*
>         do
>                 typeset bar
>                 if [[ $fred = NULL ]]
>                 then
>                         typeset foo
>                         foo=(`echo output from some process`)
>                         bar=$foo[0]
>                 else
>                         bar=$fred
>                 fi
>         done
>         echo 'End loop...'
>         return 0
> }
...

Using zsh 3.1.2b I get the following:

zsh> bug X Y Z
Start loop...
bar=output
bar=output
End loop...

where the system is:

zsh> uname -a
SunOS voltera 5.5.1 Generic sun4u sparc SUNW,Ultra-1

The 'bar=output' lines occur when the 'typeset bar' line is
executed, because the previously declared bar is still in scope.
Therefore 'typeset bar' has the same effect as typing 'typeset PATH'
at the prompt, i.e. it returns the current value of the variable
rather than declaring a fresh variable.

The scoping rules for typeset in the Z Shell Guide only mention
variables 
being local to a function (unless I've missed something), so that I
would
expect to get the same output as below

> zsh> bug X Y Z
> Start loop...
> bar=output
> foo=(output from some process)
> bar=output
> foo=(output from some process)
> End loop...
> 

Either moving the typeset statements out of the loop or inserting
explicit
unset statements removes the extraneous output.

N.B.
On my system, using the original bug program leads to the variable foo
being persistant. It may be overwritten with 'foo=...' but any attempt
to unset foo (even after it has been overwritten) resets foo to the
value 'output from some process'.


      parent reply	other threads:[~1997-11-02 17:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-11-01 22:01 ramos
1997-11-02 11:24 ` C. v. Stuckrad
1997-11-02 16:48 ` stringfellow.n.d [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=345CAEFA.EE@rmcs.cran.ac.uk \
    --to=stringfe@rmcs.cran.ac.uk \
    --cc=ramos@ih4ess.ih.lucent.com \
    --cc=zsh-workers@math.gatech.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).