summaryrefslogtreecommitdiff
path: root/ext/standard/var.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/var.c')
-rw-r--r--ext/standard/var.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/ext/standard/var.c b/ext/standard/var.c
index ca0273c213..410c0fdeb9 100644
--- a/ext/standard/var.c
+++ b/ext/standard/var.c
@@ -1222,6 +1222,13 @@ PHP_FUNCTION(unserialize)
zend_hash_add_empty_element(class_hash, lcname);
zend_string_release_ex(lcname, 0);
} ZEND_HASH_FOREACH_END();
+
+ /* Exception during string conversion. */
+ if (EG(exception)) {
+ zend_hash_destroy(class_hash);
+ FREE_HASHTABLE(class_hash);
+ PHP_VAR_UNSERIALIZE_DESTROY(var_hash);
+ }
}
php_var_unserialize_set_allowed_classes(var_hash, class_hash);
}