[#27417] selector namespace — Shugo Maeda <shugo@...>

前田です。

17 messages 2005/10/13

[#27458] Matrix class is broken without mathn — akira yamada / やまだあきら <akira@...>

Debianユーザからrequire "mathn"しないときに

28 messages 2005/10/19
[#27461] Re: Matrix class is broken without mathn — Yukihiro Matsumoto <matz@...> 2005/10/19

まつもと ゆきひろです

[#27596] Re: Matrix class is broken without mathn — Masahiro Sakai (酒井政裕) <sakai@...> 2005/10/31

酒井といいます。

[#27601] Re: Matrix class is broken without mathn — Yukihiro Matsumoto <matz@...> 2005/10/31

まつもと ゆきひろです

[#27605] Re: Matrix class is broken without mathn — keiju@... (石塚圭樹) 2005/10/31

けいじゅ@いしつかです.

[#27691] Re: Matrix class is broken without mathn — Shin-ichiro HARA <sinara@...> 2005/11/12

原です。

[#27700] Re: Matrix class is broken without mathn — keiju@... (石塚圭樹) 2005/11/14

けいじゅ@いしつかです.

[#27484] 1.8.4 feature freeze? — "URABE Shyouhei aka. mput" <root@...>

卜部です。

19 messages 2005/10/23
[#27485] Re: 1.8.4 feature freeze? — Yukihiro Matsumoto <matz@...> 2005/10/23

まつもと ゆきひろです

[#27492] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。

20 messages 2005/10/24
[#27493] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — Yukihiro Matsumoto <matz@...> 2005/10/24

まつもと ゆきひろです

[#27494] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — WATANABE Hirofumi <eban@...> 2005/10/24

わたなべです。

[#27495] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/10/24

山本です。

[#27503] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/10/25

山本です。

[#27504] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — "U.Nakamura" <usa@...> 2005/10/25

こんにちは、なかむら(う)です。

[#27505] Re: [ ruby-Bugs-2613 ] building ruby 1.8.3 on Solaris — nobuyoshi nakada <nobuyoshi.nakada@...> 2005/10/25

なかだです。

[#27551] 1.8.4 検証を(だれが|どのように)行うか — "URABE Shyouhei aka.mput" <root@...>

さて、 1.8.4-Preview1

41 messages 2005/10/28
[#27561] Re: 1.8.4 検証を(だれが|どのように)行うか — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/10/30

山本です。

[#27562] Re: 1.8.4 検証を(だれが�匹里茲Δ�)行うか — "URABE Shyouhei aka.mput" <root@...> 2005/10/30

卜部です。

[#27566] Re: 1.8.4 検証を(だれが|どのように)行うか — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2005/10/30

山本です。

[#27586] Re: 1.8.4 検証を(だれが|どのように)行うか — "U.Nakamura" <usa@...> 2005/10/31

こんにちは、なかむら(う)です。

[#27587] Re: 1.8.4 検証を(だれが|どのように)行うか — Yukihiro Matsumoto <matz@...> 2005/10/31

まつもと ゆきひろです

[ruby-dev:27513] broken Qtrue in 64bit environment

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2005-10-25 08:38:37 UTC
List: ruby-dev #27513
山本です。

[ruby-dev:27049] とも関連するような話なんですが、
http://inamode6.tokuhirom.dnsalias.org/show/1037 という話を目にしました。

// 再現コード(bcc32の場合)

#include <stdio.h>

typedef unsigned __int64 VALUE;

#define Qtrue 3 /* 32bit */

static void test(); /* ANYARGS */

int main()
{
    test(Qtrue);
}

static void test(VALUE val) /* 64bit */
{
    printf("%Lx\n", val); /* 3256e7da00000003 */
}

VisualC++ では再現しませんが、たぶん引数を増やしたりすればおかしくなると
思います。

結局のところ、ANYARGS を使うなら

  * int, double より小さいサイズの変数は引数に渡せない(使えない)

  * それより大きいサイズでも、型を厳密にあわせる必要がある

ということなんでしょうか。他にもこういう場所がありそうな気がしますが、
とりあえず下のようなパッチは必要なんじゃないでしょうか。

Index: ruby.h
===================================================================
RCS file: /src/ruby/ruby.h,v
retrieving revision 1.125
diff -u -w -b -p -r1.125 ruby.h
--- ruby.h	21 Oct 2005 06:46:39 -0000	1.125
+++ ruby.h	25 Oct 2005 08:23:59 -0000
@@ -187,10 +187,10 @@ VALUE rb_ull2inum(unsigned LONG_LONG);
 #define SYM2ID(x) RSHIFT((long)x,8)
 
 /* special contants - i.e. non-zero and non-fixnum constants */
-#define Qfalse 0
-#define Qtrue  2
-#define Qnil   4
-#define Qundef 6		/* undefined value for placeholder */
+#define Qfalse ((VALUE)0)
+#define Qtrue  ((VALUE)2)
+#define Qnil   ((VALUE)4)
+#define Qundef ((VALUE)6)	/* undefined value for placeholder */
 
 #define RTEST(v) (((VALUE)(v) & ~Qnil) != 0)
 #define NIL_P(v) ((VALUE)(v) == Qnil)

しかしこうなってくると、[ruby-dev:27028] が欲しい気がしてきますね。


In This Thread

Prev Next