e$B1sF#$G$9!#e(B
e$B0J2<$N$h$&$K$9$k$H!"Ff$Ne(B SystemStackError e$B$,=P$F$-$^$9!#e(B
$ ./ruby -ve ‘Enumerator.new { }.take(1).inject(&:+)’
ruby 1.9.2dev (2009-05-19 trunk 23489) [i686-linux]
-e:1:in proc': stack level too deep (SystemStackError) from -e:1:in
to_proc’
from -e:1:in `’
1.9.1-p0 e$B$G$bF1$8$G$7$?!#e(B
e$BD4$Y$F$$?$H$3$m!"8=:$N%V%m%C%/$Ne(B cfp->lfp[0]
e$B$,;X$9%V%m%C%/$,e(B
e$B<+J,<+?H$K$J$C$F$$$k$h$&$G$9e(B (e$B@53N$K$O!“B>$N%V%m%C%/$r2r$7$Fe(B
e$B4V@\E*$K=[4D$7$F$$$k$h$&$G$7$?e(B) e$B!#e(B
e$B$=$N$;$$$G!“e(Bvm.c e$B$Ne(B rb_vm_make_proc e$B$He(B
vm_make_proc_from_block e$B$,e(B
e$BAj8_$K8F$S=P$7$”$C$FL58B:F5”$7$F$$$k$h$&$G$9!#e(B
cfp->lfp[0] e$B$,$*$+$7$/$J$k860x$O$?$V$se(B enumerator.c e$B$G!"e(B
- yielder_new e$B$,e(B rb_iterate(yielder_new_i, …) e$B$r8F$Ve(B
- passed_block e$B$,@_Dj$5$l$ke(B
- yielder_new_i e$B$Oe(B Ruby e$B%l%Y%k$N%a%=%C%I$r8F$P$:$K=*N;$9$ke(B
- passed_block e$B$,@_Dj$5$l$?$^$^!"e(Byielder_new e$B$,=*$o$j!"e(BYARV
e$B$Ne(B
eval e$B%k!<%W$KLa$ke(B - passed_block e$B$,$I$3$+JQ$J$H$3$m$Ge(B cfp->lfp[0] e$B$KBeF~$5$l$ke(B
e$B$H$$$&N.$l$K$J$C$F$$$k$h$&$K46$8$^$7$?e(B (yielder
e$B$,$I$s$J$b$N$+$Oe(B
e$B$h$/$o$+$C$F$$$^$;$se(B) e$B!#e(B
e$B$=$3$G!"0J2<$N$h$&$K!"e(Byielder_new_i e$B$Ge(B proc
e$B%a%=%C%I$r8F$V$3$H$Ge(B
e$B%P%0$OD>$j$^$7$?!#e(B
Index: enumerator.c
— enumerator.c (revision 23508)
+++ enumerator.c (working copy)
@@ -720,7 +720,7 @@
static VALUE
yielder_new_i(VALUE dummy)
{
- return yielder_init(yielder_allocate(rb_cYielder),
rb_block_proc());
- return yielder_init(yielder_allocate(rb_cYielder),
rb_funcall(Qnil, rb_intern(“proc”), 0));
}
static VALUE
e$B$5$5$@$5$s$,$$$$$H8@$C$F$/$l$?$ie(B (e$B$b$7$/$O2?$b8@$o$J$$$J$ie(B)
e$B%3%_%C%H$7$h$&$H;W$$$^$9!#e(B
e$B>e$K4X78$7$F!“e(BRuby
e$B$N%=!<%9%3!<%I$K$O0J2<$N%”%5!<%7%g%s$,0EL[$Ke(B
e$BB8:_$9$k$H;W$C$?$N$G$9$,!"@5$7$$$G$7$g$&$+!#e(B
-
passed_block e$B$,@_Dj$5$l$?$i!"e(Beval e$B%k!<%W$KLa$kA0$Ke(B Ruby
e$B%l%Y%k$Ne(B
e$B%a%=%C%I$r8F$s$Ge(B passed_block e$B$r2s<}$5$;$J$$$H$$$1$J$$e(B -
rb_iterate e$B$de(B rb_block_call
e$B$NBh0l0z?t$KEO$5$l$k4X?t$O!"$=$NCf$Ge(B
Ruby e$B%l%Y%k$N%a%=%C%I$r8F$P$J$$$H$$$1$J$$e(B
e$B8e<T$Oe(B C API e$B$K4X$o$kOC$J$N$G!"@5$7$$$h$&$J$ie(B README.EXT
e$B$K=q$-e(B
e$B2C$($?J}$,$$$$$H;W$$$^$9!#$H$$$&$+=q$-2C$($h$&$H;W$$$^$9!#e(B