From 76f438e06fc61d32272a1f9877266c8d97d871ba Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 23 Jan 2015 14:18:56 +0800 Subject: [PATCH] Fixed ASSERTION --- Zend/zend_gc.c | 6 +----- Zend/zend_gc.h | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/Zend/zend_gc.c b/Zend/zend_gc.c index 966b615b60..ea8c06f2ce 100644 --- a/Zend/zend_gc.c +++ b/Zend/zend_gc.c @@ -137,11 +137,7 @@ ZEND_API void gc_init(void) ZEND_API void gc_possible_root(zend_refcounted *ref) { - if (GC_TYPE(ref) == IS_NULL) { - return; - } - - ZEND_ASSERT(GC_TYPE(ref) == IS_ARRAY || GC_TYPE(ref) == IS_OBJECT); + ZEND_ASSERT(CG(unclean_shutdown) || (GC_TYPE(ref) == IS_ARRAY || GC_TYPE(ref) == IS_OBJECT)); GC_BENCH_INC(zval_possible_root); if (EXPECTED(GC_GET_COLOR(GC_INFO(ref)) == GC_BLACK)) { diff --git a/Zend/zend_gc.h b/Zend/zend_gc.h index 80425fc7ec..40c9db7565 100644 --- a/Zend/zend_gc.h +++ b/Zend/zend_gc.h @@ -141,7 +141,7 @@ END_EXTERN_C() static zend_always_inline void gc_check_possible_root(zval *z) { ZVAL_DEREF(z); - if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) { + if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z)) && EXPECTED(GC_TYPE(Z_COUNTED_P(z)) != IS_NULL)) { gc_possible_root(Z_COUNTED_P(z)); } } -- 2.40.0