zsh-workers
 help / color / mirror / code / Atom feed
From: Zoltan Hidvegi <hzoli@cs.elte.hu>
To: aheading@jpmorgan.com (Anthony Heading)
Cc: acs@world.std.com, pws@ifh.de, zsh-workers@math.gatech.edu
Subject: Re: Bug Report: Env Vars and shell functions
Date: Fri, 12 Jul 1996 17:27:28 +0200 (MET DST)	[thread overview]
Message-ID: <199607121527.RAA09051@bolyai.cs.elte.hu> (raw)
In-Reply-To: <199607112211.XAA18522@et-sun4.uk.jpmorgan.com> from Anthony Heading at "Jul 11, 96 11:11:24 pm"

> I get a segfault with the following
> 
> sun4% zsh -c xyzzy 
> hello
> zsh: 18399 segmentation fault  zsh -c xyzzy
> 
> where xyzzy is an autoloaded function containing
> 
> #!/usr/local/bin/zsh
> . thing
> 
> and `thing' is a file reading
> 
> echo hello
> 
> Traceback attached.  None of the alloc_stackp related patches applied, since
> they seemed all to be cosmetic.

They were not really cosmetic.  Had you applied these you would not have
received this.  These SEGV's are all caused by DPUTS, since it seems that
you did not applied the patch which replaces X to Y in DPUTS in zsh.h line
1314.  That was a silly typo I made before pre2 which means zsh crashes
every time when DPUTS wants to print something (which makes it look much
more serious).

> On a related note, should the following not restore IFS?
> 
> sun4% IFS=@ set a@b@c@d; echo $IFS 
> @

Here is what POSIX says:

     (2)  Variable assignments specified with special built-in utilities
          shall remain in effect after the built-in completes; this shall
          not be the case with a regular built-in or other utility.

And POSIX special builtins are

              .          continue   exit       return     trap
              :          eval       export     set        unset
              break      exec       readonly   shift

And it also says that shell functions should be handled similarily to
special builtins (which means that recent patches from Peter and me make
zsh less conformant).

Zsh currently treats a builtin this way only if the BINF_MAGICEQUALS flag
is set for the builtin.  These builtins are: alias, declare, hash, integer,
local, readonly and typeset.

Of course zsh does not conforms to the POSIX rule and handling of special
parameters in undoubtadly not the best but it also means that applications
should not expect local variable assignments before special builtins since
it may change in the future.

Also note that command arguments are evaluated before variable assignments
so the above example will never work.  The other problem with that example
is that field splitting is only done on the result of expansions so the
explicitely given a@b@c@d is not split even if IFS is set correctly before
set.

In a POSIX shell the command builtin can be used to execute special
builtins (in zsh it executes external command only).  Note that command in
not listed among the special builtins above which means that the special
assignment behaviour can be prevented by prefixing a special builtin with
the command builtin (I'm talking about POSIX and not about zsh).

I'm writing these because these differences between zsh and POSIX are
probably the most important ones.  Other than that zsh is now mostly POSIX
conformant (POSIX does not allow the MAGICEQUALS behaviour of the typeset
family but all other shells (bash, ksh93 and pdksh) do that unles
POSIXLY_CORRECT is defined).

> Ah. Another core dump:
> sun4% $(grep[TAB][TAB]
> Program received signal SIGSEGV, Segmentation fault.
> 0x6ff8128c in _doprnt ()
> #2  0x9afd0 in doexpandhist () at zle_tricky.c:3817
> 3817        DPUTS(useheap, "BUG: useheap in doexpandhist()");

That is already fixed some time ago.  It was a misplaced goto label.

Zoltan



  parent reply	other threads:[~1996-07-12 15:40 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-07-08  3:49 Peter Bray
1996-07-08  8:58 ` Bart Schaefer
1996-07-08 12:49   ` Peter Stephenson
1996-07-10  2:33     ` Zoltan Hidvegi
1996-07-10 12:19       ` Vinnie Shelton
1996-07-10 13:45         ` Zoltan Hidvegi
1996-07-11 22:11           ` Anthony Heading
1996-07-12 12:17             ` Peter Stephenson
1996-07-12 15:27             ` Zoltan Hidvegi [this message]
1996-07-12 16:01               ` Anthony Heading
1996-07-12 17:18               ` Bart Schaefer
1996-07-12 17:43                 ` Zoltan Hidvegi

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=199607121527.RAA09051@bolyai.cs.elte.hu \
    --to=hzoli@cs.elte.hu \
    --cc=acs@world.std.com \
    --cc=aheading@jpmorgan.com \
    --cc=pws@ifh.de \
    --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).