diff options
| author | Nikita Popov <nikita.ppv@gmail.com> | 2019-02-26 15:32:18 +0100 |
|---|---|---|
| committer | Nikita Popov <nikita.ppv@gmail.com> | 2019-06-05 14:25:07 +0200 |
| commit | a31f46421d7bf6f55dd9ac5876b8e2eacf7e0708 (patch) | |
| tree | 24ffd7c5ae5e321c3994048fdd0fd9f68ae7457c /ext/dom/document.c | |
| parent | 528aa7932a839fc6319979c34aa372805d8dc41c (diff) | |
| download | php-git-a31f46421d7bf6f55dd9ac5876b8e2eacf7e0708.tar.gz | |
Allow exceptions in __toString()
RFC: https://wiki.php.net/rfc/tostring_exceptions
And convert some object to string conversion related recoverable
fatal errors into Error exceptions.
Improve exception safety of internal code performing string
conversions.
Diffstat (limited to 'ext/dom/document.c')
| -rw-r--r-- | ext/dom/document.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/ext/dom/document.c b/ext/dom/document.c index 95b077b648..235323e1d7 100644 --- a/ext/dom/document.c +++ b/ext/dom/document.c @@ -338,6 +338,9 @@ int dom_document_encoding_write(dom_object *obj, zval *newval) } str = zval_get_string(newval); + if (EG(exception)) { + return FAILURE; + } handler = xmlFindCharEncodingHandler(Z_STRVAL_P(newval)); @@ -431,12 +434,15 @@ int dom_document_version_write(dom_object *obj, zval *newval) return FAILURE; } + str = zval_get_string(newval); + if (EG(exception)) { + return FAILURE; + } + if (docp->version != NULL) { xmlFree((xmlChar *) docp->version ); } - str = zval_get_string(newval); - docp->version = xmlStrdup((const xmlChar *) ZSTR_VAL(str)); zend_string_release_ex(str, 0); @@ -659,12 +665,15 @@ int dom_document_document_uri_write(dom_object *obj, zval *newval) return FAILURE; } + str = zval_get_string(newval); + if (EG(exception)) { + return FAILURE; + } + if (docp->URL != NULL) { xmlFree((xmlChar *) docp->URL); } - str = zval_get_string(newval); - docp->URL = xmlStrdup((const xmlChar *) ZSTR_VAL(str)); zend_string_release_ex(str, 0); |
