[#31143] m {|(*,(*)),|} — Tanaka Akira <akr@...>
m {|(*,(*)),|} で SEGV します。
[#31164] ruby_set_current_source remains in intern.h — Masahiro Sakai (酒井政裕) <masahiro.sakai@...>
酒井です。
[#31166] is_ruby_native_thread() — Masahiro Sakai (酒井政裕) <masahiro.sakai@...>
酒井です。
なかだです。
永井@知能.九工大です.
なかだです。
永井@知能.九工大です.
ささだです。
[#31168] 構造体オブジェクトのcloneメソッド呼び出しでメモリリーク発生 — m-ohkubo@... (Mitsuhiko OHKUBO)
大久保といいます。はじめまして。
なかだです。
大久保です。よろしくお願いします。
[#31190] 0x3fffffffffffffff.succ — Tanaka Akira <akr@...>
LP64 環境で 0x3fffffffffffffff.succ が -4611686018427387904
[#31214] Warning: OpenSSL::PKCS7::PKCS7 is deprecated after Ruby 1.9; use OpenSSL::PKCS7 instead — Kazuhiro NISHIYAMA <zn@...>
西山和広です。
[#31222] trunk: バグを指摘している警告 — pegacorn <subscriber.jp@...>
trunk で -Wall を付けてコンパイルしてみると、バグを指摘している警告が
From: pegacorn <subscriber.jp@gmail.com>
[#31242] p(65536**(1<<29)) stalls — "Yusuke ENDOH" <mame@...>
遠藤と申します。
[#31244] shift — Tanaka Akira <akr@...>
-O0 で、以下のようにすると SEGV になります。
なかだです。
In article <200707180743.l6I7hXic031558@sharui.nakada.kanuma.tochigi.jp>,
[#31285] p()#=>[] — eklerni <eklerni@...>
松尾といいます。
[#31292] ParseDate.parsedate("Tuesday, July 6th, 2007, 18:35:20 UTC") — Tanaka Akira <akr@...>
ParseDate のマニュアルにある以下の例を動かすと、示された結果
[#31298] retryの使い方 — eklerni <eklerni@...>
松尾といいます。
ささだです。
松尾です、返信ありがとうございます。
Yuguiといいます。
松尾といいます。
In article <46A909DD.1070405@for.mail-box.ne.jp>,
Tanaka Akira さんは書きました:
In article <46A92530.80507@for.mail-box.ne.jp>,
Tanaka Akira さんは書きました:
In article <46AD7A16.8080509@for.mail-box.ne.jp>,
松尾です。
ささだです。
From:eklerni
まつもと ゆきひろです
In article <E1ILDTi-0005T6-Be@x31>,
まつもと ゆきひろです
In article <E1ILKn6-0003Nv-0f@x31>,
まつもと ゆきひろです
In article <E1ILVN9-0006xJ-7I@x31>,
In article <E1ILq4x-0002Bs-Lg@x31>,
まつもと ゆきひろです
In article <E1ILweZ-00008I-Tu@x31>,
まつもと ゆきひろです
In article <E1ILyGa-0000ug-Qd@x31>,
まつもと ゆきひろです
In article <E1IM1W9-0001uC-Bz@x31>,
まつもと ゆきひろです
[ruby-dev:31193] Re: Random
なかだです。
At Thu, 12 Jul 2007 15:49:36 +0900,
NAKAMURA, Hiroshi wrote in [ruby-dev:31192]:
> [ruby-dev:31184]のうささんによる修正も入れて、これで目に見えてる範囲の
> 問題はなくなりましたね。
出遅れた感がありますが、警告の抑制とか細かいミスの修正とか。
--- random.c~ 2007-07-12 05:16:12.000000000 +0900
+++ random.c 2007-07-12 06:05:21.000000000 +0900
@@ -342,6 +342,5 @@ random_bytes(VALUE obj, VALUE len)
int r;
struct MT *mt;
- unsigned char *ptr;
- unsigned char *pend;
+ char *ptr, *pend;
switch (TYPE(len)) {
@@ -617,12 +616,12 @@ limited_fix_rand(struct MT *mt, unsigned
static VALUE
-limited_big_rand(struct MT *mt, struct RBignum *limit)
+limited_big_rand(struct MT *mt, VALUE vmax)
{
unsigned long mask, lim, rnd;
- struct RBignum *val;
+ struct RBignum *val, *limit = RB_GC_GUARD(vmax);
int i, len, boundary;
len = (limit->len * SIZEOF_BDIGITS + 3) / 4;
- val = (struct RBignum *)rb_big_clone((VALUE)limit);
+ val = RBIGNUM(rb_big_clone(vmax));
val->sign = 1;
#if SIZEOF_BDIGITS == 2
@@ -662,31 +661,26 @@ limited_big_rand(struct MT *mt, struct R
static VALUE
-limited_rand(struct MT *mt, VALUE *max)
+limited_rand(struct MT *mt, VALUE vmax)
{
- VALUE vmax = *max;
long lmax;
if (FIXNUM_P(vmax)) {
lmax = FIX2LONG(vmax) - 1;
- fixnum:
- if (lmax <= -1) {
- rb_raise(rb_eArgError, "invalid domain");
- }
- return LONG2NUM(limited_fix_rand(mt, lmax));
}
else {
- struct RBignum *limit;
Check_Type(vmax, T_BIGNUM);
- limit = (struct RBignum *)vmax;
- if (!limit->sign) {
+ if (!RBIGNUM(vmax)->sign) {
rb_raise(rb_eArgError, "invalid domain");
}
- limit = (struct RBignum *)rb_big_minus((VALUE)limit, INT2FIX(1));
- if (FIXNUM_P((VALUE)limit)) {
- lmax = (VALUE)limit;
- goto fixnum;
+ vmax = rb_big_minus(vmax, INT2FIX(1));
+ if (!FIXNUM_P(vmax)) {
+ return limited_big_rand(mt, vmax);
}
- return limited_big_rand(mt, limit);
+ lmax = FIX2LONG(vmax);
+ }
+ if (lmax < 0) {
+ rb_raise(rb_eArgError, "invalid domain");
}
+ return ULONG2NUM(limited_fix_rand(mt, lmax));
}
@@ -717,5 +711,5 @@ random_rand(int argc, VALUE *argv, VALUE
rb_scan_args(argc, argv, "01", &vmax);
if (NIL_P(vmax) || vmax == INT2FIX(0)) {
- return rb_float_new(genrand_real_0(get_mt(obj)));
+ return rb_float_new(genrand_real_0(get_mt(obj)));
}
mt = get_mt(obj);
@@ -768,5 +762,5 @@ random_rand(int argc, VALUE *argv, VALUE
break;
}
- return limited_rand(mt, &vmax);
+ return limited_rand(mt, vmax);
}
@@ -808,5 +802,5 @@ random_integer(VALUE obj, VALUE vmax)
rb_raise(rb_eArgError, "argument must be an integer");
}
- return limited_rand(mt, &vmax);
+ return limited_rand(mt, vmax);
}
--
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
中田 伸悦