mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fix arginfo/ZPP mismatch for simplexml_import_dom
Closes GH-6905
This commit is contained in:
parent
23a192d12d
commit
cb84e5c332
3 changed files with 19 additions and 14 deletions
|
@ -2619,27 +2619,32 @@ PHP_FUNCTION(simplexml_import_dom)
|
|||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
object = Z_LIBXML_NODE_P(node);
|
||||
|
||||
nodep = php_libxml_import_node(node);
|
||||
|
||||
if (nodep) {
|
||||
if (!nodep) {
|
||||
zend_argument_type_error(1, "must be of type SimpleXMLElement|DOMNode, %s given", zend_zval_type_name(node));
|
||||
RETURN_THROWS();
|
||||
}
|
||||
|
||||
if (nodep->doc == NULL) {
|
||||
php_error_docref(NULL, E_WARNING, "Imported Node must have associated Document");
|
||||
RETURN_NULL();
|
||||
}
|
||||
|
||||
if (nodep->type == XML_DOCUMENT_NODE || nodep->type == XML_HTML_DOCUMENT_NODE) {
|
||||
nodep = xmlDocGetRootElement((xmlDocPtr) nodep);
|
||||
}
|
||||
}
|
||||
|
||||
if (nodep && nodep->type == XML_ELEMENT_NODE) {
|
||||
if (nodep->type == XML_ELEMENT_NODE) {
|
||||
if (!ce) {
|
||||
ce = sxe_class_entry;
|
||||
fptr_count = NULL;
|
||||
} else {
|
||||
fptr_count = php_sxe_find_fptr_count(ce);
|
||||
}
|
||||
|
||||
object = Z_LIBXML_NODE_P(node);
|
||||
|
||||
sxe = php_sxe_object_new(ce, fptr_count);
|
||||
sxe->document = object->document;
|
||||
php_libxml_increment_doc_ref((php_libxml_node_object *)sxe, nodep->doc);
|
||||
|
|
|
@ -6,7 +6,7 @@ function simplexml_load_file(string $filename, ?string $class_name = SimpleXMLEl
|
|||
|
||||
function simplexml_load_string(string $data, ?string $class_name = SimpleXMLElement::class, int $options = 0, string $namespace_or_prefix = "", bool $is_prefix = false): SimpleXMLElement|false {}
|
||||
|
||||
function simplexml_import_dom(DOMNode $node, ?string $class_name = SimpleXMLElement::class): ?SimpleXMLElement {}
|
||||
function simplexml_import_dom(SimpleXMLElement|DOMNode $node, ?string $class_name = SimpleXMLElement::class): ?SimpleXMLElement {}
|
||||
|
||||
class SimpleXMLElement implements Stringable, Countable, RecursiveIterator
|
||||
{
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: f8ca25a00ae1a5fed436851e88229b503c77bf31 */
|
||||
* Stub hash: 70ace711365bb5e7df3174d4cfe68fb3df34a105 */
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_simplexml_load_file, 0, 1, SimpleXMLElement, MAY_BE_FALSE)
|
||||
ZEND_ARG_TYPE_INFO(0, filename, IS_STRING, 0)
|
||||
|
@ -18,7 +18,7 @@ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_simplexml_load_string, 0, 1,
|
|||
ZEND_END_ARG_INFO()
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_simplexml_import_dom, 0, 1, SimpleXMLElement, 1)
|
||||
ZEND_ARG_OBJ_INFO(0, node, DOMNode, 0)
|
||||
ZEND_ARG_OBJ_TYPE_MASK(0, node, SimpleXMLElement|DOMNode, 0, NULL)
|
||||
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, class_name, IS_STRING, 1, "SimpleXMLElement::class")
|
||||
ZEND_END_ARG_INFO()
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue