[#30872] segv when reentering into Fiber with callcc — sheepman <sheepman@...>

こんばんは、sheepman です。

15 messages 2007/06/01
[#30899] Re: segv when reentering into Fiber with callcc — SASADA Koichi <ko1@...> 2007/06/06

 ささだです。

[#30905] Re: segv when reentering into Fiber with callcc — "Yusuke ENDOH" <mame@...> 2007/06/06

遠藤と申します。

[#30906] Re: segv when reentering into Fiber with callcc — SASADA Koichi <ko1@...> 2007/06/06

 ささだです。

[#30929] secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...>

-----BEGIN PGP SIGNED MESSAGE-----

51 messages 2007/06/08
[#30930] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/08

In article <4669066C.2080307@sarion.co.jp>,

[#30934] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/08

-----BEGIN PGP SIGNED MESSAGE-----

[#30935] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/08

In article <46694461.4060706@sarion.co.jp>,

[#30936] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/08

-----BEGIN PGP SIGNED MESSAGE-----

[#30938] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/08

In article <46697C0B.8060402@sarion.co.jp>,

[#30939] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/08

-----BEGIN PGP SIGNED MESSAGE-----

[#30940] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/08

In article <4669DAB0.4050705@sarion.co.jp>,

[#30944] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/09

-----BEGIN PGP SIGNED MESSAGE-----

[#30945] Re: secrand.rb — Tanaka Akira <akr@...> 2007/06/09

In article <466AA73C.9030407@sarion.co.jp>,

[#30946] Re: secrand.rb — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/06/09

-----BEGIN PGP SIGNED MESSAGE-----

[#30950] Re: secrand.rb — Nobuyoshi Nakada <nobu@...> 2007/06/11

なかだです。

[#31173] Re: Random — Tanaka Akira <akr@...> 2007/07/10

In article <469253E9.9010203@sarion.co.jp>,

[#31174] Re: Random — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/07/10

-----BEGIN PGP SIGNED MESSAGE-----

[#31178] Re: Random — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/07/11

-----BEGIN PGP SIGNED MESSAGE-----

[#31179] Re: Random — Tanaka Akira <akr@...> 2007/07/11

In article <4694338C.7090303@sarion.co.jp>,

[#31183] Re: Random — "NAKAMURA, Hiroshi" <nakahiro@...> 2007/07/11

-----BEGIN PGP SIGNED MESSAGE-----

[#30971] Linux/ia64で'ucontext_t' undeclared — akira yamada / やまだあきら <akira@...>

最近のRuby 1.9をLinux/ia64上でmakeしようとすると

16 messages 2007/06/13
[#30973] Re: Linux/ia64で'ucontext_t' undeclared — Yukihiro Matsumoto <matz@...> 2007/06/13

まつもと ゆきひろです

[#30974] Re: Linux/ia64で'ucontext_t' undeclared — akira@... 2007/06/13

Yukihiro Matsumoto さんは書きました:

[#30975] Re: Linux/ia64で'ucontext_t' undeclared — Yukihiro Matsumoto <matz@...> 2007/06/13

まつもと ゆきひろです

[ruby-dev:31043] Re: 0**2 causes division by zero

From: Nobuyoshi Nakada <nobu@...>
Date: 2007-06-24 05:59:25 UTC
List: ruby-dev #31043
なかだです。

At Sat, 23 Jun 2007 23:57:11 +0900,
Yusuke ENDOH wrote in [ruby-dev:31040]:
> ruby 1.9 で 0**2 を評価すると SIGFPE で落ちます。

すいません。チェックを後回しにして忘れてました。

> こんな感じでしょうか。ついでに余計な最適化も入れてみましたが、
> 余計でしたらはずしてください。

yのチェックはfix_pow()でやってますから、不要だと思います。xもそっ
ちでしたほうがいいかも。

ついでにint_round()を見ていたのですが、ndigits==LONG_MINのとき
に時間がかかりすぎて返ってこなくなりますね。エラーにするか0を返
すようにしたほうがよさそうです。

> # そういえば 0**0 は 1 でいいんでしょうか。

まぁいいんじゃないでしょうか。


Index: numeric.c
===================================================================
--- numeric.c	(revision 12591)
+++ numeric.c	(working copy)
@@ -2331,4 +2331,5 @@ fix_pow(VALUE x, VALUE y)
 	if (b == 1) return x;
 	a = FIX2LONG(x);
+	if (a == 0) return INT2FIX(0);
 	if (b > 0) {
 	    return int_pow(a, b);
@@ -2902,7 +2903,5 @@ int_round(int argc, VALUE* argv, VALUE n
     int ndigits;
 
-    if (argc == 0) return num;
-    if (FIXNUM_P(num)) return num_round(argc, argv, num);
-
+    if (argc == 0) return 0;
     rb_scan_args(argc, argv, "1", &n);
     ndigits = NUM2INT(n);
@@ -2910,6 +2909,20 @@ int_round(int argc, VALUE* argv, VALUE n
 	return rb_Float(num);
     }
+    if (ndigits == 0) {
+	return num;
+    }
     ndigits = -ndigits;
+    if (ndigits < 0) {
+	rb_raise(rb_eArgError, "ndigits out of range");
+    }
     f = int_pow(10, ndigits);
+    if (FIXNUM_P(num) && FIXNUM_P(f)) {
+	SIGNED_VALUE x = FIX2LONG(num), y = FIX2LONG(f);
+	int neg = x < 0;
+	if (neg) x = -x;
+	x = (x + y / 2) / y * y;
+	if (neg) x = -x;
+	return LONG2NUM(x);
+    }
     h = rb_funcall(f, '/', 1, INT2FIX(2));
     r = rb_funcall(num, '%', 1, f);


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread