diff --git a/Zend/tests/bug72581.phpt b/Zend/tests/bug72581.phpt new file mode 100644 index 00000000000..775f6e360db --- /dev/null +++ b/Zend/tests/bug72581.phpt @@ -0,0 +1,17 @@ +--TEST-- +Bug #72581 (previous property undefined in Exception after deserialization) +--FILE-- +__toString()); +?> +--EXPECTF-- +string(%s) "Exception: aaa in %sbug72581.php:%d +Stack trace: +#0 {main}" diff --git a/Zend/zend_exceptions.c b/Zend/zend_exceptions.c index f73dde1a974..7fd55a4fc81 100644 --- a/Zend/zend_exceptions.c +++ b/Zend/zend_exceptions.c @@ -303,9 +303,8 @@ ZEND_METHOD(exception, __construct) /* {{{ proto Exception::__wakeup() Exception unserialize checks */ #define CHECK_EXC_TYPE(id, type) \ - ZVAL_UNDEF(&value); \ pvalue = zend_read_property_ex(i_get_exception_base(object), (object), CG(known_strings)[id], 1, &value); \ - if(Z_TYPE_P(pvalue) != IS_UNDEF && Z_TYPE_P(pvalue) != type) { \ + if (Z_TYPE_P(pvalue) != IS_NULL && Z_TYPE_P(pvalue) != type) { \ zval tmp; \ ZVAL_STR_COPY(&tmp, CG(known_strings)[id]); \ Z_OBJ_HANDLER_P(object, unset_property)(object, &tmp, NULL); \