[前][次][番号順一覧][スレッド一覧]

ruby-changes:17909

From: usa <ko1@a...>
Date: Thu, 25 Nov 2010 10:31:48 +0900 (JST)
Subject: [ruby-changes:17909] Ruby:r29925 (trunk): * ext/dl/callback/mkcallback.rb (gencallback): shouldn't assume that

usa	2010-11-25 10:31:21 +0900 (Thu, 25 Nov 2010)

  New Revision: 29925

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=29925

  Log:
    * ext/dl/callback/mkcallback.rb (gencallback): shouldn't assume that
      VALUE is the same size with long.

  Modified files:
    trunk/ChangeLog
    trunk/ext/dl/callback/mkcallback.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 29924)
+++ ChangeLog	(revision 29925)
@@ -1,3 +1,8 @@
+Thu Nov 25 10:29:55 2010  NAKAMURA Usaku  <usa@r...>
+
+	* ext/dl/callback/mkcallback.rb (gencallback): shouldn't assume that
+	  VALUE is the same size with long.
+
 Thu Nov 25 10:03:14 2010  NAKAMURA Usaku  <usa@r...>
 
 	* test/win32ole/test_err_in_callback.rb (teardown): remove tmp file
Index: ext/dl/callback/mkcallback.rb
===================================================================
--- ext/dl/callback/mkcallback.rb	(revision 29924)
+++ ext/dl/callback/mkcallback.rb	(revision 29925)
@@ -128,8 +128,16 @@
 {
     VALUE ret, cb#{argc > 0 ? ", args[#{argc}]" : ""};
 #{
+      sizeof_voidp = [""].pack('p').size
+      sizeof_long = [0].pack('l!').size
       (0...argc).collect{|i|
-	"    args[%d] = LONG2NUM(stack%d);" % [i,i]
+        if sizeof_voidp == sizeof_long
+          "    args[%d] = LONG2NUM(stack%d);" % [i,i]
+        elsif sizeof_voidp == 8 # should get sizeof_long_long...
+          "    args[%d] = LL2NUM(stack%d);" % [i,i]
+        else
+          raise "unknown size of void*"
+        end
       }.join("\n")
 }
     cb = rb_ary_entry(rb_ary_entry(#{proc_entry}, #{ty}), #{(n * DLSTACK_SIZE) + argc});

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]