ID: 32797
User updated by: JClawson at tamu dot edu
Reported By: JClawson at tamu dot edu
Status: Open
Bug Type: Compile Failure
Operating System: * (with GCC 4 only)
PHP Version: 5.0.4
New Comment:
Sorry... the code I posted should be this
if (root->name) {
free((char *)root->name);
root->name = NULL;
}
Previous Comments:
------------------------------------------------------------------------
[2005-04-22 00:10:24] [EMAIL PROTECTED]
Works fine with GCC 3.
------------------------------------------------------------------------
[2005-04-22 00:05:29] JClawson at tamu dot edu
Description:
------------
The my_free function macro in ext/xmlrpc/libxmlrpc/xml_element.c is
poorly written and results in invalid C code on line 192. Please
remove this macro completly from the file and write out the proper code
for each case the free() function is called.
/home/upgrade-tmp/php5-STABLE-200504211236/ext/xmlrpc/libxmlrpc/xml_element.c:
In function 'xml_elem_free_non_recurse':
/home/upgrade-tmp/php5-STABLE-200504211236/ext/xmlrpc/libxmlrpc/xml_element.c:192:
error: invalid lvalue in assignment
/home/upgrade-tmp/php5-STABLE-200504211236/ext/xmlrpc/libxmlrpc/xml_element.c:
In function 'xml_elem_entity_escape':
/home/upgrade-tmp/php5-STABLE-200504211236/ext/xmlrpc/libxmlrpc/xml_element.c:317:
warning: pointer targets in assignment differ in signedness
/home/upgrade-tmp/php5-STABLE-200504211236/ext/xmlrpc/libxmlrpc/xml_element.c:332:
warning: pointer targets in assignment differ in signedness
make: *** [ext/xmlrpc/libxmlrpc/xml_element.lo] Error 1
Reproduce code:
---------------
Here is the macro
#define my_free(thing) if(thing) {free(thing); thing = 0;}
This will not work on 192:
my_free((char*)root->name);
Expected result:
----------------
Consider changing the call on 192 from:
my_free((char*)root->name);
to:
if(root -> name)
{
free((char*)root->name);
root->name = 0;
}
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=32797&edit=1