@@ -1497,33 +1497,13 @@ static void dom_libxml_reconcile_ensure_namespaces_are_declared(xmlNodePtr nodep
14971497 xmlDOMWrapReconcileNamespaces (& dummy_ctxt , nodep , /* options */ 0 );
14981498}
14991499
1500- static bool dom_must_replace_namespace_by_empty_default (xmlDocPtr doc , xmlNodePtr nodep )
1501- {
1502- xmlNsPtr default_ns = xmlSearchNs (doc , nodep -> parent , NULL );
1503- return default_ns != NULL && default_ns -> href != NULL && default_ns -> href [0 ] != '\0' ;
1504- }
1505-
1506- static void dom_replace_namespace_by_empty_default (xmlDocPtr doc , xmlNodePtr nodep )
1507- {
1508- ZEND_ASSERT (nodep -> ns == NULL );
1509- /* The node uses the default empty namespace, but the current default namespace is non-empty.
1510- * We can't unconditionally do this because otherwise libxml2 creates an xmlns="" declaration.
1511- * Note: there's no point searching the oldNs list, because we haven't found it in the tree anyway.
1512- * Ideally this would be pre-allocated but unfortunately libxml2 doesn't offer such a functionality. */
1513- xmlSetNs (nodep , xmlNewNs (nodep , (const xmlChar * ) "" , NULL ));
1514- }
1515-
15161500void dom_reconcile_ns (xmlDocPtr doc , xmlNodePtr nodep ) /* {{{ */
15171501{
15181502 /* Although the node type will be checked by the libxml2 API,
15191503 * we still want to do the internal reconciliation conditionally. */
15201504 if (nodep -> type == XML_ELEMENT_NODE ) {
15211505 dom_reconcile_ns_internal (doc , nodep , nodep -> parent );
15221506 dom_libxml_reconcile_ensure_namespaces_are_declared (nodep );
1523- /* Check nodep->ns first to avoid an expensive lookup. */
1524- if (nodep -> ns == NULL && dom_must_replace_namespace_by_empty_default (doc , nodep )) {
1525- dom_replace_namespace_by_empty_default (doc , nodep );
1526- }
15271507 }
15281508}
15291509/* }}} */
@@ -1547,30 +1527,12 @@ static void dom_reconcile_ns_list_internal(xmlDocPtr doc, xmlNodePtr nodep, xmlN
15471527
15481528void dom_reconcile_ns_list (xmlDocPtr doc , xmlNodePtr nodep , xmlNodePtr last )
15491529{
1550- bool did_compute_must_replace_namespace_by_empty_default = false;
1551- bool must_replace_namespace_by_empty_default = false;
1552-
15531530 dom_reconcile_ns_list_internal (doc , nodep , last , nodep -> parent );
1554-
15551531 /* The loop is outside of the recursion in the above call because
15561532 * dom_libxml_reconcile_ensure_namespaces_are_declared() performs its own recursion. */
15571533 while (true) {
15581534 /* The internal libxml2 call will already check the node type, no need for us to do it here. */
15591535 dom_libxml_reconcile_ensure_namespaces_are_declared (nodep );
1560-
1561- /* We don't have to handle the children, because if their ns's are NULL they'll just take on the default
1562- * which should've been reconciled before. */
1563- if (nodep -> ns == NULL ) {
1564- /* This is an optimistic approach: we assume that most of the time we don't need the result of the computation. */
1565- if (!did_compute_must_replace_namespace_by_empty_default ) {
1566- did_compute_must_replace_namespace_by_empty_default = true;
1567- must_replace_namespace_by_empty_default = dom_must_replace_namespace_by_empty_default (doc , nodep );
1568- }
1569- if (must_replace_namespace_by_empty_default ) {
1570- dom_replace_namespace_by_empty_default (doc , nodep );
1571- }
1572- }
1573-
15741536 if (nodep == last ) {
15751537 break ;
15761538 }
0 commit comments