summaryrefslogtreecommitdiff
path: root/ext/dom/document.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dom/document.c')
-rw-r--r--ext/dom/document.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/ext/dom/document.c b/ext/dom/document.c
index bdb58497b9..2b6ce169e8 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -251,12 +251,14 @@ int dom_document_doctype_read(dom_object *obj, zval **retval TSRMLS_DC)
return FAILURE;
}
+ ALLOC_ZVAL(*retval);
+
dtdptr = xmlGetIntSubset(docp);
if (!dtdptr) {
- return FAILURE;
+ ZVAL_NULL(*retval);
+ return SUCCESS;
}
- ALLOC_ZVAL(*retval);
if (NULL == (*retval = php_dom_create_object((xmlNodePtr) dtdptr, &ret, NULL, *retval, obj TSRMLS_CC))) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
return FAILURE;
@@ -299,12 +301,14 @@ int dom_document_document_element_read(dom_object *obj, zval **retval TSRMLS_DC)
return FAILURE;
}
+ ALLOC_ZVAL(*retval);
+
root = xmlDocGetRootElement(docp);
if (!root) {
- return FAILURE;
+ ZVAL_NULL(*retval);
+ return SUCCESS;
}
- ALLOC_ZVAL(*retval);
if (NULL == (*retval = php_dom_create_object(root, &ret, NULL, *retval, obj TSRMLS_CC))) {
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot create required DOM object");
return FAILURE;