こんばんは、sheeman です。

次のようにすると core を吐きます。

$ ./ruby -ve 'srand(1<<100000000)'
ruby 1.9.0 (2005-01-07) [i686-linux]
zsh: segmentation fault  ./ruby -ve 'srand(1<<100000000)'

以下はパッチです。

Index: random.c
===================================================================
RCS file: /src/ruby/random.c,v
retrieving revision 1.37
diff -u -r1.37 random.c
--- random.c    6 Jan 2005 08:23:38 -0000       1.37
+++ random.c    7 Jan 2005 12:06:04 -0000
@@ -216,7 +216,7 @@
                    rb_obj_classname(vseed));
     }
     len = (len + 3) / 4; /* number of 32bit words */
-    buf = ALLOCA_N(long, len); /* allocate longs for init_by_array */
+    buf = ALLOC_N(long, len); /* allocate longs for init_by_array */
     memset(buf, 0, len * sizeof(long));
     if (FIXNUM_P(seed)) {
         buf[0] = FIX2ULONG(seed) & 0xffffffff;
@@ -248,7 +248,7 @@
     first = 0;
     old = saved_seed;
     saved_seed = seed;
-
+    free(buf);
     return old;
 }
 
-- 
sheepman / TAMURA Takashi
sheepman / tcn.zaq.ne.jp http://sheepman.parfait.ne.jp/