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:[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