From 6d578164f5da815fb71d23ad186e841359384f25 Mon Sep 17 00:00:00 2001 From: Koichi Sasada Date: Wed, 25 Sep 2019 17:12:55 +0900 Subject: check `ARY_SHARED_ROOT_P()`. ARY_SHARED_ROOT_P(ary) is true, ARY_HEAP_CAPA(ary) should not be called. --- array.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'array.c') diff --git a/array.c b/array.c index 7b086f4ff9..825d9f7126 100644 --- a/array.c +++ b/array.c @@ -786,7 +786,11 @@ void rb_ary_free(VALUE ary) { if (ARY_OWNS_HEAP_P(ary)) { - (void)RB_DEBUG_COUNTER_INC_IF(obj_ary_extracapa, ARY_HEAP_CAPA(ary) > RARRAY_LEN(ary)); + if (USE_DEBUG_COUNTER && + !ARY_SHARED_ROOT_P(ary) && + ARY_HEAP_CAPA(ary) > RARRAY_LEN(ary)) { + RB_DEBUG_COUNTER_INC(obj_ary_extracapa); + } if (RARRAY_TRANSIENT_P(ary)) { RB_DEBUG_COUNTER_INC(obj_ary_transient); -- cgit v1.2.3