@@ -245,11 +245,21 @@ zend_result dom_node_node_type_read(dom_object *obj, zval *retval)
245245
246246/* }}} */
247247
248+ static xmlNodePtr dom_node_get_parent (dom_object * obj , xmlNodePtr nodep )
249+ {
250+ if (nodep -> type == XML_NAMESPACE_DECL ) {
251+ dom_object_namespace_node * ns = php_dom_namespace_node_obj_from_obj (& obj -> std );
252+ return ns -> parent_intern ? dom_object_get_node (ns -> parent_intern ) : NULL ;
253+ }
254+ return nodep -> parent ;
255+ }
256+
257+
248258static zend_result dom_node_parent_get (dom_object * obj , zval * retval , bool only_element )
249259{
250260 DOM_PROP_NODE (xmlNodePtr , nodep , obj );
251261
252- xmlNodePtr nodeparent = nodep -> parent ;
262+ xmlNodePtr nodeparent = dom_node_get_parent ( obj , nodep ) ;
253263 if (!nodeparent || (only_element && nodeparent -> type != XML_ELEMENT_NODE )) {
254264 ZVAL_NULL (retval );
255265 return SUCCESS ;
@@ -457,7 +467,12 @@ URL: https://dom.spec.whatwg.org/#dom-node-isconnected
457467zend_result dom_node_is_connected_read (dom_object * obj , zval * retval )
458468{
459469 DOM_PROP_NODE (xmlNodePtr , nodep , obj );
460- ZVAL_BOOL (retval , php_dom_is_node_connected (nodep ));
470+ if (nodep -> type == XML_NAMESPACE_DECL ) {
471+ xmlNodePtr parent = dom_node_get_parent (obj , nodep );
472+ ZVAL_BOOL (retval , parent && php_dom_is_node_connected (parent ));
473+ } else {
474+ ZVAL_BOOL (retval , php_dom_is_node_connected (nodep ));
475+ }
461476 return SUCCESS ;
462477}
463478/* }}} */
0 commit comments