diff --git a/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c b/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c index 3a40318628f10..765460906e57b 100644 --- a/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c +++ b/ext/dom/lexbor/lexbor/selectors-adapted/selectors.c @@ -3,7 +3,7 @@ * * Author: Alexander Borisov * Adapted for PHP + libxml2 by: Niels Dossche - * Based on Lexbor 2.4.0 (upstream commit e9d35f6384de7bd8c1b79e7111bc3a44f8822967) + * Based on Lexbor (upstream commit b347aa4e4da4e82b1cae18989ceea1aa0278daf1) */ #include @@ -970,7 +970,7 @@ lxb_selectors_state_has_relative(const xmlNode *node, break; } - while (node !=root && node->next == NULL) { + while (node != root && node->next == NULL && node->parent != NULL) { node = node->parent; } diff --git a/ext/dom/tests/modern/css_selectors/lexbor274.phpt b/ext/dom/tests/modern/css_selectors/lexbor274.phpt new file mode 100644 index 0000000000000..836280b166648 --- /dev/null +++ b/ext/dom/tests/modern/css_selectors/lexbor274.phpt @@ -0,0 +1,13 @@ +--TEST-- +Lexbor #274 +--EXTENSIONS-- +dom +--FILE-- +
\n', LIBXML_NOERROR); +var_dump($dom->querySelector('a:has(+ b)')); + +?> +--EXPECT-- +NULL