summaryrefslogtreecommitdiff
path: root/ext/soap/php_encoding.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/soap/php_encoding.c')
-rw-r--r--ext/soap/php_encoding.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/ext/soap/php_encoding.c b/ext/soap/php_encoding.c
index e88012af52..7e8a5da935 100644
--- a/ext/soap/php_encoding.c
+++ b/ext/soap/php_encoding.c
@@ -1519,7 +1519,13 @@ static zval *to_zval_object_ex(zval *ret, encodeTypePtr type, xmlNodePtr data, z
text = xmlNewText(BAD_CAST(str_val));
xmlAddChild(dummy, text);
ZVAL_NULL(&data);
- master_to_zval(&data, attr->encode, dummy);
+ /* TODO: There are other places using dummy nodes -- generalize? */
+ zend_try {
+ master_to_zval(&data, attr->encode, dummy);
+ } zend_catch {
+ xmlFreeNode(dummy);
+ zend_bailout();
+ } zend_end_try();
xmlFreeNode(dummy);
set_zval_property(ret, attr->name, &data);
}