}
DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
-
+#if LIBXML_VERSION < 20627
+/* Implement logic from libxml xmlTextConcat to add suport for comments and PI */
+ if ((nodep->content == (xmlChar *) &(nodep->properties)) ||
+ ((nodep->doc != NULL) && (nodep->doc->dict != NULL) &&
+ xmlDictOwns(nodep->doc->dict, nodep->content))) {
+ nodep->content = xmlStrncatNew(nodep->content, arg, arg_len);
+ } else {
+ nodep->content = xmlStrncat(nodep->content, arg, arg_len);
+ }
+ nodep->properties = NULL;
+#else
xmlTextConcat(nodep, arg, arg_len);
-
+#endif
RETURN_TRUE;
}
/* }}} end dom_characterdata_append_data */
dom_object *intern;
xmlNsPtr nsptr;
int prefix_len = 0;
- char *prefix;
+ char *prefix=NULL;
- if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os&", &id, dom_node_class_entry, &prefix, &prefix_len, UG(utf8_conv)) == FAILURE) {
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os!&", &id, dom_node_class_entry, &prefix, &prefix_len, UG(utf8_conv)) == FAILURE) {
return;
}
DOM_GET_OBJ(nodep, id, xmlNodePtr, intern);
- if (prefix_len > 0) {
- nsptr = xmlSearchNs(nodep->doc, nodep, prefix);
- if (nsptr && nsptr->href != NULL) {
- RETVAL_XML_STRING((char *) nsptr->href, ZSTR_DUPLICATE);
- return;
- }
+ nsptr = xmlSearchNs(nodep->doc, nodep, prefix);
+ if (nsptr && nsptr->href != NULL) {
+ RETVAL_XML_STRING((char *) nsptr->href, ZSTR_DUPLICATE);
+ return;
}
RETURN_NULL();
--- /dev/null
+--TEST--
+Bug # 38850 (lookupNamespaceURI does not return default namespace)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+$xml = b<<<HERE
+<?xml version="1.0" ?>
+<foo xmlns="http://www.example.com/ns/foo" />
+HERE;
+
+$doc = new DOMDocument();
+$doc->loadXML($xml);
+
+$root = $doc->documentElement;
+
+print $root->lookupNamespaceURI(NULL);
+
+
+?>
+--EXPECT--
+http://www.example.com/ns/foo