rrichards Mon Oct 6 17:28:01 2003 EDT Modified files: /php-src/ext/dom php_dom.c element.c document.c Log: some namespace fixes fix compiler warning Index: php-src/ext/dom/php_dom.c diff -u php-src/ext/dom/php_dom.c:1.35 php-src/ext/dom/php_dom.c:1.36 --- php-src/ext/dom/php_dom.c:1.35 Sun Oct 5 07:52:22 2003 +++ php-src/ext/dom/php_dom.c Mon Oct 6 17:28:01 2003 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: php_dom.c,v 1.35 2003/10/05 11:52:22 rrichards Exp $ */ +/* $Id: php_dom.c,v 1.36 2003/10/06 21:28:01 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -1276,12 +1276,15 @@ int dom_check_qname(char *qname, char **localname, char **prefix, int uri_len, int name_len) { int errorcode = 0; - if (uri_len > 0 && name_len > 0) { + if (name_len > 0) { *localname = xmlSplitQName2(qname, (xmlChar **) prefix); if (*localname == NULL) { *localname = xmlStrdup(qname); + if (*prefix == NULL && uri_len == 0) { + return errorcode; + } } - if (*localname == NULL || (xmlStrchr(*localname, (xmlChar) ':') != NULL)) { + if (uri_len == 0 || *localname == NULL || (xmlStrchr(*localname, (xmlChar) ':') != NULL)) { errorcode = NAMESPACE_ERR; } } else { Index: php-src/ext/dom/element.c diff -u php-src/ext/dom/element.c:1.16 php-src/ext/dom/element.c:1.17 --- php-src/ext/dom/element.c:1.16 Sun Oct 5 17:49:47 2003 +++ php-src/ext/dom/element.c Mon Oct 6 17:28:01 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: element.c,v 1.16 2003/10/05 21:49:47 shane Exp $ */ +/* $Id: element.c,v 1.17 2003/10/06 21:28:01 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -120,7 +120,7 @@ ZVAL_STRING(*retval, qname, 1); xmlFree(qname); } else { - ZVAL_STRING(*retval, nodep->name, 1); + ZVAL_STRING(*retval, (char *) nodep->name, 1); } return SUCCESS; @@ -508,7 +508,7 @@ DOM_GET_THIS_OBJ(elemp, id, xmlNodePtr, intern); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sss", &uri, &uri_len, &name, &name_len, &value, &value_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!ss", &uri, &uri_len, &name, &name_len, &value, &value_len) == FAILURE) { return; } @@ -522,30 +522,32 @@ errorcode = dom_check_qname(name, &localname, &prefix, uri_len, name_len); if (errorcode == 0) { - nodep = (xmlNodePtr) xmlHasNsProp(elemp, localname, uri); - if (nodep != NULL) { - node_list_unlink(nodep->children TSRMLS_CC); - } - nsptr = xmlSearchNsByHref(elemp->doc, elemp, uri); - while (nsptr && nsptr->prefix == NULL) { - nsptr = nsptr->next; - } - if (nsptr == NULL) { - if (prefix == NULL) { - errorcode = NAMESPACE_ERR; - } else { - nsptr = dom_get_ns(elemp, uri, &errorcode, prefix); + if (uri_len > 0) { + nodep = (xmlNodePtr) xmlHasNsProp(elemp, localname, uri); + if (nodep != NULL) { + node_list_unlink(nodep->children TSRMLS_CC); + } + nsptr = xmlSearchNsByHref(elemp->doc, elemp, uri); + while (nsptr && nsptr->prefix == NULL) { + nsptr = nsptr->next; + } + if (nsptr == NULL) { + if (prefix == NULL) { + errorcode = NAMESPACE_ERR; + } else { + nsptr = dom_get_ns(elemp, uri, &errorcode, prefix); + } } - } - - if (errorcode == 0) { - nodep = (xmlNodePtr) xmlSetNsProp(elemp, nsptr, localname, NULL); - } - attr = xmlSetProp(nodep, localname, value); - if (!attr) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "No such attribute '%s'", localname); - RETURN_FALSE; + if (errorcode == 0) { + attr = xmlSetNsProp(elemp, nsptr, localname, value); + } + } else { + attr = xmlHasProp(elemp, localname); + if (attr != NULL) { + node_list_unlink(attr->children TSRMLS_CC); + } + attr = xmlSetProp(elemp, localname, value); } } Index: php-src/ext/dom/document.c diff -u php-src/ext/dom/document.c:1.29 php-src/ext/dom/document.c:1.30 --- php-src/ext/dom/document.c:1.29 Sun Oct 5 16:45:26 2003 +++ php-src/ext/dom/document.c Mon Oct 6 17:28:01 2003 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: document.c,v 1.29 2003/10/05 20:45:26 shane Exp $ */ +/* $Id: document.c,v 1.30 2003/10/06 21:28:01 rrichards Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -968,7 +968,7 @@ DOM_GET_THIS_OBJ(docp, id, xmlDocPtr, intern); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &uri, &uri_len, &name, &name_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!s", &uri, &uri_len, &name, &name_len) == FAILURE) { return; } @@ -976,7 +976,7 @@ if (errorcode == 0) { nodep = xmlNewDocNode (docp, NULL, localname, NULL); - if (nodep != NULL) { + if (nodep != NULL && uri != NULL) { nsptr = xmlSearchNsByHref (nodep->doc, nodep, uri); if (nsptr == NULL) { nsptr = dom_get_ns(nodep, uri, &errorcode, prefix); @@ -1028,7 +1028,7 @@ DOM_GET_THIS_OBJ(docp, id, xmlDocPtr, intern); - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &uri, &uri_len, &name, &name_len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s!s", &uri, &uri_len, &name, &name_len) == FAILURE) { return; } @@ -1037,7 +1037,7 @@ errorcode = dom_check_qname(name, &localname, &prefix, uri_len, name_len); if (errorcode == 0) { nodep = (xmlNodePtr) xmlNewDocProp(docp, localname, NULL); - if (nodep != NULL) { + if (nodep != NULL && uri_len > 0) { nsptr = xmlSearchNsByHref (nodep->doc, root, uri); if (nsptr == NULL) { nsptr = dom_get_ns(root, uri, &errorcode, prefix);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php