Skip to content

Commit c10436f

Browse files
committed
Use E_ERROR for some DOM out-of-memory error conditions
1 parent b0961f2 commit c10436f

File tree

3 files changed

+17
-13
lines changed

3 files changed

+17
-13
lines changed

ext/dom/document.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,10 @@ int dom_document_config_read(dom_object *obj, zval *retval)
506506

507507
/* }}} */
508508

509+
ZEND_NORETURN static void php_dom_fatal_libxml_error(void) {
510+
zend_error_noreturn(E_ERROR, "Libxml error: Likely out of memory");
511+
}
512+
509513
/* {{{ URL: http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/DOM3-Core.html#core-ID-2141741547
510514
Since:
511515
*/
@@ -533,7 +537,7 @@ PHP_METHOD(DOMDocument, createElement)
533537

534538
node = xmlNewDocNode(docp, NULL, (xmlChar *) name, (xmlChar *) value);
535539
if (!node) {
536-
RETURN_FALSE;
540+
php_dom_fatal_libxml_error();
537541
}
538542

539543
DOM_RET_OBJ(node, &ret, intern);
@@ -558,9 +562,9 @@ PHP_METHOD(DOMDocument, createDocumentFragment)
558562

559563
DOM_GET_OBJ(docp, id, xmlDocPtr, intern);
560564

561-
node = xmlNewDocFragment(docp);
565+
node = xmlNewDocFragment(docp);
562566
if (!node) {
563-
RETURN_FALSE;
567+
php_dom_fatal_libxml_error();
564568
}
565569

566570
DOM_RET_OBJ(node, &ret, intern);
@@ -589,7 +593,7 @@ PHP_METHOD(DOMDocument, createTextNode)
589593

590594
node = xmlNewDocText(docp, (xmlChar *) value);
591595
if (!node) {
592-
RETURN_FALSE;
596+
php_dom_fatal_libxml_error();
593597
}
594598

595599
DOM_RET_OBJ(node, &ret, intern);
@@ -618,7 +622,7 @@ PHP_METHOD(DOMDocument, createComment)
618622

619623
node = xmlNewDocComment(docp, (xmlChar *) value);
620624
if (!node) {
621-
RETURN_FALSE;
625+
php_dom_fatal_libxml_error();
622626
}
623627

624628
DOM_RET_OBJ(node, &ret, intern);
@@ -647,7 +651,7 @@ PHP_METHOD(DOMDocument, createCDATASection)
647651

648652
node = xmlNewCDataBlock(docp, (xmlChar *) value, value_len);
649653
if (!node) {
650-
RETURN_FALSE;
654+
php_dom_fatal_libxml_error();
651655
}
652656

653657
DOM_RET_OBJ(node, &ret, intern);
@@ -681,7 +685,7 @@ PHP_METHOD(DOMDocument, createProcessingInstruction)
681685

682686
node = xmlNewPI((xmlChar *) name, (xmlChar *) value);
683687
if (!node) {
684-
RETURN_FALSE;
688+
php_dom_fatal_libxml_error();
685689
}
686690

687691
node->doc = docp;
@@ -717,7 +721,7 @@ PHP_METHOD(DOMDocument, createAttribute)
717721

718722
node = xmlNewDocProp(docp, (xmlChar *) name, NULL);
719723
if (!node) {
720-
RETURN_FALSE;
724+
php_dom_fatal_libxml_error();
721725
}
722726

723727
DOM_RET_OBJ((xmlNodePtr) node, &ret, intern);
@@ -752,7 +756,7 @@ PHP_METHOD(DOMDocument, createEntityReference)
752756

753757
node = xmlNewReference(docp, (xmlChar *) name);
754758
if (!node) {
755-
RETURN_FALSE;
759+
php_dom_fatal_libxml_error();
756760
}
757761

758762
DOM_RET_OBJ((xmlNodePtr) node, &ret, intern);

ext/dom/php_dom.stub.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -467,10 +467,10 @@ public function createAttributeNS(?string $namespace, string $qualifiedName) {}
467467
/** @return DOMCdataSection|false */
468468
public function createCDATASection(string $data) {}
469469

470-
/** @return DOMComment|false */
470+
/** @return DOMComment */
471471
public function createComment(string $data) {}
472472

473-
/** @return DOMDocumentFragment|false */
473+
/** @return DOMDocumentFragment */
474474
public function createDocumentFragment() {}
475475

476476
/** @return DOMElement|false */
@@ -485,7 +485,7 @@ public function createEntityReference(string $name) {}
485485
/** @return DOMProcessingInstruction|false */
486486
public function createProcessingInstruction(string $target, string $data = "") {}
487487

488-
/** @return DOMText|false */
488+
/** @return DOMText */
489489
public function createTextNode(string $data) {}
490490

491491
/** @return DOMElement|null */

ext/dom/php_dom_arginfo.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: f9bcfaa9c0ed58949c4ee58fbf1833359010be7d */
2+
* Stub hash: 6045721c540d168c7e2323b6c7b685c073d17971 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_dom_import_simplexml, 0, 1, DOMElement, 1)
55
ZEND_ARG_TYPE_INFO(0, node, IS_OBJECT, 0)

0 commit comments

Comments
 (0)