ID:               32797
 Updated by:       [EMAIL PROTECTED]
 Reported By:      JClawson at tamu dot edu
-Status:           Open
+Status:           Closed
 Bug Type:         Compile Failure
 Operating System: * (with GCC 4 only)
 PHP Version:      5.0.4
 New Comment:

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.

This is invalid C code; allowing cast-as-lvalue is an extension to C
which has been deprecated (and has triggered warnings) since gcc 3.4.

Fixed on HEAD, will backport shortly.


Previous Comments:
------------------------------------------------------------------------

[2005-04-22 09:14:41] [EMAIL PROTECTED]

Not everyone will use GCC..ever.


------------------------------------------------------------------------

[2005-04-22 08:14:33] JClawson at tamu dot edu

Hmmm... I thought free was supposed to ignore the null pointer.  At
least that was my understanding:

Here is a nice table:
http://developer.apple.com/qa/qa2001/qa1259.html

I guess its better to be safe than sorry.

------------------------------------------------------------------------

[2005-04-22 07:24:46] [EMAIL PROTECTED]

1) Relying on free() to ignore NULL pointers is not portable: we do
have to support other compilers beside GCC 4

2) Using cast expressions as lvalues has always been supported in C,
but apparently GCC 4 suddenly doesn't support it anymore. In this
particular case, however, we might change the macro so it only does the
cast for the argument to free() , and only for compilers that require
it, i.e. compilers/libc's that define free like free(char*)


------------------------------------------------------------------------

[2005-04-22 04:44:12] [EMAIL PROTECTED]

Please lose the attitude; we don't have time for that.
As for PHP; you appear to have the knowledge--submit a working patch
that doesn't break the code.

------------------------------------------------------------------------

[2005-04-22 04:10:00] JClawson at tamu dot edu

Oh... Everyone will not be using GCC 3 forever.  Don't you think it
would be prudent to correct obvious errors now?

After all if you have the following code:

if((char*)root->name)
{
   free((char*)root->name);
   (char*)root->name = 0;

}

why would you assign a pointer to 0?

And for whatever reason... why the stupid if statement????
Why not just simplify everything with:

free((char*)root->name);

Bam... correct C code.  If root->name is NULL thats ok... because free
can take NULL as a paramater!

You don't free somthing and then try to assign an integer to it...
seriously.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/32797

-- 
Edit this bug report at http://bugs.php.net/?id=32797&edit=1

Reply via email to