Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: (NULL == 0) ?



> To answer the subject line, (NULL == 0) *is* guaranteed.  0 is the
> representation of the null pointer constant in C.
> 
> >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.
> 
> A lot of C code assumes this, but it is broken.  No Unix standard
> guarantees more than the C standard about the representation of null
> pointers.

Does anything guarantees that on those (theoretical) systems where NULL is
not really zero, all static and external pointers are initialized to this
NULL?  There are many many places where this assumption is used.

Does anyone heard about such a Unix system?  I bet that if such a system
exists memset would be just the easiest among many other problems.

A couple of other questions about Unix and C standards: does anything
guarantee that a variable is always 8 * sizeof(var) bits long?  Does any
Unix or C standard guarantee that ASCII is used (zsh assumes ASCII in many
places)?  Does any Unix or C standard guarantees that an int always has at
least 32 bits?  Did anyone tried to compile zsh on a 80286 of 8086 Unix?
I can imagine that NULL is not really zero on such systems but I doubt
that zsh can be used on such a system anyway.

Zoltan




Messages sorted by: Reverse Date, Date, Thread, Author