From 07bda97e765407bac9c37c9d4feb6aebb23434bd Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 17 Jan 2020 11:37:35 +0100 Subject: [PATCH] Fixed bug #79115 --- NEWS | 4 ++++ ext/reflection/php_reflection.c | 2 ++ ext/reflection/tests/bug79115.phpt | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 ext/reflection/tests/bug79115.phpt diff --git a/NEWS b/NEWS index e9693709490..f506b78b4ee 100644 --- a/NEWS +++ b/NEWS @@ -14,6 +14,10 @@ PHP NEWS . Fixed bug #79084 (mysqlnd may fetch wrong column indexes with MYSQLI_BOTH). (cmb) +- Reflection: + . Fixed bug #79115 (ReflectionClass::isCloneable call reflected class + __destruct). (Nikita) + 23 Jan 2020, PHP 7.3.14 - Core diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index ac623e1c05c..3fa4533e4e0 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -4588,6 +4588,8 @@ ZEND_METHOD(reflection_class, isCloneable) if (UNEXPECTED(object_init_ex(&obj, ce) != SUCCESS)) { return; } + /* We're not calling the constructor, so don't call the destructor either. */ + zend_object_store_ctor_failed(Z_OBJ(obj)); RETVAL_BOOL(Z_OBJ_HANDLER(obj, clone_obj) != NULL); zval_ptr_dtor(&obj); } diff --git a/ext/reflection/tests/bug79115.phpt b/ext/reflection/tests/bug79115.phpt new file mode 100644 index 00000000000..b8ba6f1d7ff --- /dev/null +++ b/ext/reflection/tests/bug79115.phpt @@ -0,0 +1,16 @@ +--TEST-- +Bug #79115: ReflectionClass::isCloneable call reflected class __destruct +--FILE-- +isCloneable()); + +?> +--EXPECT-- +bool(true)