diff options
author | Koichi Sasada <ko1@atdot.net> | 2019-09-25 17:12:55 +0900 |
---|---|---|
committer | Koichi Sasada <ko1@atdot.net> | 2019-09-25 17:12:55 +0900 |
commit | 6d578164f5da815fb71d23ad186e841359384f25 (patch) | |
tree | 142fcc601a4e353e9254a4a5c6438bc275b92951 /array.c | |
parent | 3deeb3fd914bc5604e84e7a41ec2b5193a560479 (diff) | |
download | ruby-6d578164f5da815fb71d23ad186e841359384f25.tar.gz |
check `ARY_SHARED_ROOT_P()`.
ARY_SHARED_ROOT_P(ary) is true, ARY_HEAP_CAPA(ary) should not
be called.
Diffstat (limited to 'array.c')
-rw-r--r-- | array.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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); |