diff options
author | Joe Watkins <krakjoe@php.net> | 2019-03-12 00:37:28 +0100 |
---|---|---|
committer | Joe Watkins <krakjoe@php.net> | 2019-03-12 00:37:28 +0100 |
commit | 99230784f5524f5387a8a6760bdaf9aa2eb91545 (patch) | |
tree | 8e7b56d0e65d2d82c4d84c680cef7ac41b6825fa /Zend/zend_objects.c | |
parent | dbcdf857968d72a7045610dccb6da650a1a8deda (diff) | |
parent | 6529d7acd9912a609924633a43e6562799566225 (diff) | |
download | php-git-99230784f5524f5387a8a6760bdaf9aa2eb91545.tar.gz |
Merge branch 'PHP-7.4'
* PHP-7.4:
zend_weakrefs
Diffstat (limited to 'Zend/zend_objects.c')
-rw-r--r-- | Zend/zend_objects.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c index f73ef91178..fca24d209d 100644 --- a/Zend/zend_objects.c +++ b/Zend/zend_objects.c @@ -24,6 +24,7 @@ #include "zend_API.h" #include "zend_interfaces.h" #include "zend_exceptions.h" +#include "zend_weakrefs.h" static zend_always_inline void _zend_object_std_init(zend_object *object, zend_class_entry *ce) { @@ -70,6 +71,7 @@ ZEND_API void zend_object_std_dtor(zend_object *object) p++; } while (p != end); } + if (UNEXPECTED(object->ce->ce_flags & ZEND_ACC_USE_GUARDS)) { if (EXPECTED(Z_TYPE_P(p) == IS_STRING)) { zval_ptr_dtor_str(p); @@ -82,6 +84,10 @@ ZEND_API void zend_object_std_dtor(zend_object *object) FREE_HASHTABLE(guards); } } + + if (UNEXPECTED(GC_FLAGS(object) & IS_OBJ_WEAKLY_REFERENCED)) { + zend_weakrefs_notify(object); + } } ZEND_API void zend_objects_destroy_object(zend_object *object) |