e$B?9ED$H?=$7$^$9!%e(B
e$B$H$"$k>r7o2<$Ge(B ruby_xrealloc
e$B$,0[>o$J9bIQEY$G8F$P$l$F$$$?$N$GD4$Y$F$e(B
e$B$?$H$3$m!$e(B Array#pop e$B$Ge(B capa
e$B$r=L$a$k%3!<%I$KL@$i$+$K%P%0$H;W$o$l$kIte(B
e$BJ,$,$"$C$?$N$G=$@5$7$F$$^$7$?!%e(B
Index: array.c
RCS file: /src/ruby/array.c,v
retrieving revision 1.188
diff -u -r1.188 array.c
— array.c 24 Jun 2006 14:52:59 -0000 1.188
+++ array.c 13 Jul 2006 04:26:37 -0000
@@ -454,10 +454,11 @@
rb_ary_modify_check(ary);
if (RARRAY(ary)->len == 0) return Qnil;
if (!FL_TEST(ary, ELTS_SHARED) &&
-
RARRAY(ary)->len * 2 < RARRAY(ary)->aux.capa &&
-
RARRAY(ary)->len * 3 < RARRAY(ary)->aux.capa && RARRAY(ary)->aux.capa > ARY_DEFAULT_SIZE) {
-
RARRAY(ary)->aux.capa = RARRAY(ary)->len * 2;
-
REALLOC_N(RARRAY(ary)->ptr, VALUE, RARRAY(ary)->aux.capa);
-
RARRAY(ary)->aux.capa = RARRAY(ary)->len * 2 ;
-
REALLOC_N(RARRAY(ary)->ptr, VALUE,
RARRAY(ary)->aux.capa);
}
return RARRAY(ary)->ptr[–RARRAY(ary)->len];
}