]> granicus.if.org Git - php/commitdiff
some namespace fixes
authorRob Richards <rrichards@php.net>
Mon, 6 Oct 2003 21:28:01 +0000 (21:28 +0000)
committerRob Richards <rrichards@php.net>
Mon, 6 Oct 2003 21:28:01 +0000 (21:28 +0000)
fix compiler warning

ext/dom/document.c
ext/dom/element.c
ext/dom/php_dom.c

index e9e08a85db2e5daa62d150b65bb90f2cac09d539..90c6e5bad356cfda07149209259e10baa52e26f4 100644 (file)
@@ -968,7 +968,7 @@ PHP_FUNCTION(dom_document_create_element_ns)
 
        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 @@ PHP_FUNCTION(dom_document_create_element_ns)
 
        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 @@ PHP_FUNCTION(dom_document_create_attribute_ns)
 
        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 @@ PHP_FUNCTION(dom_document_create_attribute_ns)
                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);
index 640eb24dd195dbd68e21de62caa4fb138656fb60..0a70b50bbb481383c8c33f138b09bef5c2b11fdd 100644 (file)
@@ -120,7 +120,7 @@ int dom_element_tag_name_read(dom_object *obj, zval **retval TSRMLS_DC)
                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 @@ PHP_FUNCTION(dom_element_set_attribute_ns)
 
        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 @@ PHP_FUNCTION(dom_element_set_attribute_ns)
        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 e22ea1acfcd921fe06c9dac77b27bd4bd432f637..b1149d8b86f64fb2e992447a4558742c1e759eff 100644 (file)
@@ -1276,12 +1276,15 @@ void dom_set_old_ns(xmlDoc *doc, xmlNs *ns) {
 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 {