e$B1sF#$H?=$7$^$9!#e(B
64 bit e$B4D6-$GBg$-$J%a%b%j$r3NJ]$7$h$&$H$9$k$H!"%(%i!<I=<($b$J$/e(B
exit(1) e$B$9$k$h$&$G$9!#e(B
$ ./ruby -e ‘[1] * (2**32); p :foo’
$ echo $?
1
e$B$$$^$$$A2?$,5/$-$F$$$k$N$+$o$+$C$F$J$$$N$G$9$,!"e(B
- rb_memerror e$B$Ge(B th->raised_flag |= RAISED_NOMEMORY e$B$9$ke(B
- rb_longjmp e$B$Ge(B th->raised_flag & RAISED_EXCEPTION e$B$@$C$?$ie(B
FATAL e$B$9$ke(B
e$B$H$$$&N.$l$G!"e(BRAISED_*
e$B$,0J2<$N$h$&$KDj5A$5$l$F$$$k$N$G$9$,!"e(B
e$B$3$l$O0U?^E*$J$b$N$G$7$g$&$+!#e(B
enum {
RAISED_EXCEPTION = 1,
RAISED_STACKOVERFLOW,
RAISED_NOMEMORY,
};
e$B%U%i%0MQES$J$i!“e(BRAISED_NOMEMORY e$B$Oe(B 4
e$B$J$N$+$J!”$H;W$$$^$7$?!#e(B
Index: eval_intern.h
— eval_intern.h (revision 16157)
+++ eval_intern.h (working copy)
@@ -194,8 +194,8 @@
enum {
RAISED_EXCEPTION = 1,
- RAISED_STACKOVERFLOW,
- RAISED_NOMEMORY,
- RAISED_STACKOVERFLOW = 2,
- RAISED_NOMEMORY = 4,
};
int rb_thread_set_raised(rb_thread_t *th);
int rb_thread_reset_raised(rb_thread_t *th);