Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:22962 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 19646 invoked by uid 1010); 25 Apr 2006 15:45:47 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 19631 invoked from network); 25 Apr 2006 15:45:46 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 25 Apr 2006 15:45:46 -0000 X-PHP-List-Original-Sender: frank@kromann.info X-Host-Fingerprint: 64.186.239.125 c-064-186-239-125.oc1.redwire.net Linux 2.5 (sometimes 2.4) (4) Received: from ([64.186.239.125:46617] helo=mail.kromann.info) by pb1.pair.com (ecelerity 2.0 beta r(6323M)) with SMTP id 90/FB-19715-A244E444 for ; Tue, 25 Apr 2006 11:45:46 -0400 Received: from warp (www.kromann.info [64.186.239.115]) by mail.kromann.info (Postfix) with SMTP id 74F374040AF; Tue, 25 Apr 2006 08:45:42 -0700 (PDT) To: Dmitry Stogov Cc: 'Andrei Zmievski' , 'PHP Internals' X-Mailer: Swwwing 2000 Message-ID: <11459799287400000@9866357972520000.9866341568840000> MIME-Version: 1.0 Reply-To: "Frank M. Kromann" Date: Tue, 25 Apr 2006 08:45:29 -0700 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Subject: RE: ZSTR and NULL problems again From: frank@kromann.info ("Frank M. Kromann") 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: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 > > > > > > > > >