zsh-workers
 help / color / mirror / code / Atom feed
From: Richard Coleman <coleman@math.gatech.edu>
To: zsh-workers@math.gatech.edu
Subject: Re: (NULL == 0) ?
Date: Sat, 25 May 1996 17:25:35 -0400	[thread overview]
Message-ID: <199605252125.RAA21046@redwood.skiles.gatech.edu> (raw)
In-Reply-To: Your message of "Sat, 25 May 1996 21:52:09 BST." <13043.199605252052@stone.dcs.warwick.ac.uk>

> >What Unix has a NULL that isn't all-bits-zero?
> 
> I'm not sure about Unices, but the C FAQ does list more than one system.

I would be willing to bet money it's a non-unix box.  Just think of
the tremendous amount of unix code that uses the fact that calloc (in
our case zcalloc) returns memory that is all zeros (and hence is
NULL).  Since zsh only works on unix boxes, I think zeroing out memory
with memset is ok.

> >                                                That would break
> >a tremendous amount of code.  There all lots of places in zsh
> >that assume this and use memset.  I don't think we should change
> >this.
> 
> I haven't noticed any other places that use memset for this purpose.  I
> only noticed this one because I was looking for this particular bug.  I
> think if there are other places that do this we should fix them because
> they are broken.  GCC can probably optimise looped assignments to be
> almost as good as memset on systems where NULL is all-bits-zero.

I'm no expert on compilers, but I would be surprised if gcc could
optimize such a loop to be as fast as memset.  Usually memset is
hand optimized assembler code.

The function `newhashtable' uses zcalloc to allocate hashtable memory
and the function `emptyhashtable' uses memset to set this same memory
to zero when it is emptied.  If assuming NULL was equal to 0 would
crash a machine, then these two pieces of code would have done it a
long time ago.  The hashtable code gets executed a lot.

rc



  reply	other threads:[~1996-05-25 21:41 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-05-25 14:38 clwords bugfix Zefram
1996-05-25 18:02 ` Richard Coleman
1996-05-25 20:52   ` Zefram
1996-05-25 21:25     ` Richard Coleman [this message]
1996-05-25 22:00       ` (NULL == 0) ? Zefram
1996-05-27  0:00         ` Zoltan Hidvegi
1996-05-27  6:39           ` Bart Schaefer
1996-05-27  7:29             ` anthony baxter
1996-05-27 13:07           ` Zefram
1996-05-27 22:00             ` Zoltan Hidvegi
1996-05-27 22:11               ` Zefram
1996-05-27 22:41                 ` Zoltan Hidvegi
1996-05-27 22:54                   ` Zefram
1996-05-28  4:54                     ` Bart Schaefer
1996-05-27 23:36                 ` Bart Schaefer

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=199605252125.RAA21046@redwood.skiles.gatech.edu \
    --to=coleman@math.gatech.edu \
    --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).