ID: 46323 User updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Feedback +Status: Open Bug Type: SimpleXML related Operating System: NetWare PHP Version: 5.2.7RC1 Assigned To: rrichards New Comment:
Hi, the error message is probably some misleading, and usual for CodeWarrior (grrr). The real prob is the difference between const xmlChar* and xmlChar*; the prototype of _node_as_zval() has as 6th param 'xmlChar *nsprefix' defined where - as you already pointed out - nodeptr->ns->href is 'const xmlChar*'; therefore your suggestion fails in same way since it would also assign the (const xmlChar*)nodeptr->ns->href to (xmlChar*)href without a cast. So I would stay with a proper cast according to the prototype: --- simplexml.c.orig Thu Sep 11 16:23:34 2008 +++ simplexml.c Mon Oct 20 18:21:27 2008 @@ -1233,7 +1233,8 @@ if (nodeptr->type == XML_TEXT_NODE) { _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_NONE, NULL, NULL, 0 TSRMLS_CC); } else if (nodeptr->type == XML_ATTRIBUTE_NODE) { - _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, nodeptr->ns ? nodeptr->ns->href : NULL, 0 TSRMLS_CC); + _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, + nodeptr->ns ? (xmlChar*)nodeptr->ns->href : NULL, 0 TSRMLS_CC); } else { _node_as_zval(sxe, nodeptr, value, SXE_ITER_NONE, NULL, NULL, 0 TSRMLS_CC); } Previous Comments: ------------------------------------------------------------------------ [2008-10-20 12:33:33] [EMAIL PROTECTED] Why is nodeptr->ns->href being detected as const void * by CodeWarrior? It is of cont xmlChar * (libxml tree.h). Does it compile using the following? xmlChar *href = nodeptr->ns ? nodeptr->ns->href : NULL; _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, href, 0 TSRMLS_CC); ------------------------------------------------------------------------ [2008-10-16 22:54:31] [EMAIL PROTECTED] Description: ------------ compilation of simplexml for NetWare with CodeWarrior compiler breaks because of different types without using a cast: Compiling simplexml.c... simplexml.c:1236: illegal implicit conversion from 'const void *' to simplexml.c:1236: 'unsigned char *' Errors caused tool to abort. make: *** [release/simplexml.obj] Error 1 make: Leaving directory `C:/php5_test/php-5.2.7RC1/ext/simplexml' Reproduce code: --------------- compile... Expected result: ---------------- compile doesnt break. Actual result: -------------- compile breaks. suggested fix: --- simplexml.c.orig Thu Sep 11 16:23:34 2008 +++ simplexml.c Wed Oct 15 19:21:53 2008 @@ -1233,7 +1233,7 @@ if (nodeptr->type == XML_TEXT_NODE) { _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_NONE, NULL, NULL, 0 TSRMLS_CC); } else if (nodeptr->type == XML_ATTRIBUTE_NODE) { - _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, nodeptr->ns ? nodeptr->ns->href : NULL, 0 TSRMLS_CC); + _node_as_zval(sxe, nodeptr->parent, value, SXE_ITER_ATTRLIST, (char*)nodeptr->name, nodeptr->ns ? (unsigned char*)nodeptr->ns->href : NULL, 0 TSRMLS_CC); } else { _node_as_zval(sxe, nodeptr, value, SXE_ITER_NONE, NULL, NULL, 0 TSRMLS_CC); } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=46323&edit=1