summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-10-21 10:27:35 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-10-21 10:27:35 +0200
commit065d00f241d452a888ad187260718e46e331db30 (patch)
treec1387902c113cda0887975fd00c6fac346b5ef39
parentf7c61c070f76f8ebfefdf0210a3f7ea3501cde1a (diff)
parented31e0413309286473c9f5a32614a9c6b4062d3e (diff)
downloadphp-git-065d00f241d452a888ad187260718e46e331db30.tar.gz
Merge branch 'PHP-7.4'
* PHP-7.4: Fix leak with cycle in static prop of internal class
-rw-r--r--Zend/tests/bug78335_2.phpt12
-rw-r--r--Zend/zend_execute_API.c5
2 files changed, 12 insertions, 5 deletions
diff --git a/Zend/tests/bug78335_2.phpt b/Zend/tests/bug78335_2.phpt
new file mode 100644
index 0000000000..bc9e8f5f0c
--- /dev/null
+++ b/Zend/tests/bug78335_2.phpt
@@ -0,0 +1,12 @@
+--TEST--
+Bug #78335: Static properties containing cycles report as leak (internal class variant)
+--FILE--
+<?php
+
+$foo = [&$foo];
+_ZendTestClass::$_StaticProp = $foo;
+
+?>
+===DONE===
+--EXPECT--
+===DONE===
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index 11819cf327..4551085675 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -292,9 +292,6 @@ void shutdown_executor(void) /* {{{ */
} ZEND_HASH_FOREACH_END();
ZEND_HASH_REVERSE_FOREACH_VAL(EG(class_table), zv) {
zend_class_entry *ce = Z_PTR_P(zv);
- if (ce->type == ZEND_INTERNAL_CLASS) {
- break;
- }
if (ce->default_static_members_count) {
zend_cleanup_internal_class_data(ce);
}
@@ -395,8 +392,6 @@ void shutdown_executor(void) /* {{{ */
} ZEND_HASH_FOREACH_END_DEL();
}
- zend_cleanup_internal_classes();
-
while (EG(symtable_cache_ptr) > EG(symtable_cache)) {
EG(symtable_cache_ptr)--;
zend_hash_destroy(*EG(symtable_cache_ptr));