NULL_ZSTR is not a problem, but when a macro defines ZSTR(buf) and buf is
NULL_ZSTR you get ZSTR(NULL_ZSTR) which is invalid.

- Frank

> What was the problem with NULL_ZSTR?
> 
> Dmitry.
> 
> > -----Original Message-----
> > From: Andrei Zmievski [mailto:[EMAIL PROTECTED] 
> > Sent: Tuesday, April 25, 2006 1:35 AM
> > To: PHP Internals
> > Cc: Dmitry Stogov; Frank M. Kromann
> > Subject: ZSTR and NULL problems again
> > 
> > 
> > After Frank's latest changes, HEAD doesn't compile under gcc 2.95 
> > anymore:
> > 
> > /homes/andrei/dev/php-src/ext/spl/spl_directory.c:1359: cast to union

> > type from type not present in union
> > 
> > That line is:
> > 
> >          buf = php_stream_get_line(intern->u.file.stream, NULL, 0, 
> > &line_len);
> > 
> > Definition of php_stream_get_line():
> > 
> >     #define php_stream_get_line(stream, buf, maxlen, retlen)    
> > _php_stream_get_line((stream), IS_STRING, ZSTR(buf), (maxlen), 0, 
> > (retlen) TSRMLS_CC)
> > 
> > And under GCC ZSTR is defined as:
> > 
> > typedef union _zstr {
> >      char  *s;
> >      UChar *u;
> >      void  *v;
> > } zstr;
> > 
> > #ifdef __GNUC__
> > #   define ZSTR(x)    ((zstr)(x))
> > #   define NULL_ZSTR  ZSTR((void*)NULL)
> > #   define EMPTY_ZSTR ZSTR("\0\0")
> > 
> > So, do we have to pass (void*)NULL everywhere now? Or can we 
> > do this in 
> > a cross-platform way somehow?
> > 
> > -Andrei
> > 
> > 
> > 
> 
> 
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to