Re: RE: ZSTR and NULL problems again

From: Date: Tue, 25 Apr 2006 10:54:48 +0000
Subject: Re: RE: ZSTR and NULL problems again
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-22953@lists.php.net to get a copy of this message
The problem was the macro expansion (problematic on non-gcc builds): ZSTR(NULL_ZSTR) --> ZSTR(ZSTR((void*)NULL)) But I agree with Wez and I thing that the ZSTR() should be removed from the php_stream_get_line() macro. BTW, I though it wasn't possible to build PHP with gcc 2.95 anymore. At least on Solaris I can't build PHP with gcc 2.95 for a long time ago. Nuno ----- Original Message -----
What was the problem with NULL_ZSTR? Dmitry.
-----Original Message----- From: Andrei Zmievski [mailto:andrei@gravitonic.com] 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


« previous php.internals (#22953) next »