summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog19
-rw-r--r--ext/dl/lib/dl/types.rb10
-rw-r--r--ext/dl/lib/dl/value.rb4
-rw-r--r--ext/fiddle/conversions.c2
-rw-r--r--test/ruby/memory_status.rb6
-rw-r--r--version.h2
6 files changed, 37 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 4004a33b3e..e6226f39dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * test/ruby/memory_status.rb (Memory::Win32): 64bit support.
+
+Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/value.rb (DL::ValueUtil.{unsigned_value,signed_value}):
+ currenly pack/unpack does not accept "q!" and "Q!".
+
+Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/fiddle/conversions.c (value_to_generic): src is not guranteed as
+ a Bignum if the type is LONG_LONG. it may be a Fixnum if the value
+ is small.
+
+Thu Feb 9 16:19:04 2012 NAKAMURA Usaku <usa@ruby-lang.org>
+
+ * ext/dl/lib/types.rb: Win64 support.
+
Thu Feb 9 11:11:15 2012 Hiroshi Shirosaki <h.shirosaki@gmail.com>
* ext/dbm/dbm.c (Init_dbm): fix a build error on mswin32.
diff --git a/ext/dl/lib/dl/types.rb b/ext/dl/lib/dl/types.rb
index c79f74f95c..3dfa40807a 100644
--- a/ext/dl/lib/dl/types.rb
+++ b/ext/dl/lib/dl/types.rb
@@ -7,6 +7,8 @@ module DL
# * BOOL
# * BYTE
# * DWORD
+ # * DWORD32
+ # * DWORD64
# * HANDLE
# * HDC
# * HINSTANCE
@@ -27,6 +29,8 @@ module DL
m.module_eval{
typealias "DWORD", "unsigned long"
typealias "PDWORD", "unsigned long *"
+ typealias "DWORD32", "unsigned long"
+ typealias "DWORD64", "unsigned long long"
typealias "WORD", "unsigned short"
typealias "PWORD", "unsigned short *"
typealias "BOOL", "int"
@@ -36,7 +40,11 @@ module DL
typealias "UINT", "unsigned int"
typealias "ULONG", "unsigned long"
typealias "UCHAR", "unsigned char"
- typealias "HANDLE", "unsigned long"
+ if [nil].pack('p').bytesize == 8
+ typealias "HANDLE", "unsigned long long"
+ else
+ typealias "HANDLE", "unsigned long"
+ end
typealias "PHANDLE", "void*"
typealias "PVOID", "void*"
typealias "LPCSTR", "char*"
diff --git a/ext/dl/lib/dl/value.rb b/ext/dl/lib/dl/value.rb
index 51f96b293b..e99e3cf3bf 100644
--- a/ext/dl/lib/dl/value.rb
+++ b/ext/dl/lib/dl/value.rb
@@ -13,7 +13,7 @@ module DL
when TYPE_LONG
[val].pack("l!").unpack("L!")[0]
when TYPE_LONG_LONG
- [val].pack("q!").unpack("Q!")[0]
+ [val].pack("q").unpack("Q")[0]
else
val
end
@@ -30,7 +30,7 @@ module DL
when TYPE_LONG
[val].pack("L!").unpack("l!")[0]
when TYPE_LONG_LONG
- [val].pack("Q!").unpack("q!")[0]
+ [val].pack("Q").unpack("q")[0]
else
val
end
diff --git a/ext/fiddle/conversions.c b/ext/fiddle/conversions.c
index 8ffd7c5e08..14b444fb65 100644
--- a/ext/fiddle/conversions.c
+++ b/ext/fiddle/conversions.c
@@ -72,7 +72,7 @@ value_to_generic(int type, VALUE src, fiddle_generic * dst)
break;
#if HAVE_LONG_LONG
case TYPE_LONG_LONG:
- dst->long_long = rb_big2ull(src);
+ dst->long_long = NUM2ULL(src);
break;
#endif
case TYPE_FLOAT:
diff --git a/test/ruby/memory_status.rb b/test/ruby/memory_status.rb
index d0596ccd5e..f504c0a736 100644
--- a/test/ruby/memory_status.rb
+++ b/test/ruby/memory_status.rb
@@ -22,7 +22,11 @@ module Memory
extend DL::Importer
dlload "kernel32.dll", "psapi.dll"
include DL::Win32Types
- typealias "SIZE_T", "DWORD"
+ if [nil].pack('p').bytesize == 8
+ typealias "SIZE_T", "DWORD64"
+ else
+ typealias "SIZE_T", "DWORD32"
+ end
PROCESS_MEMORY_COUNTERS = struct [
"DWORD cb",
diff --git a/version.h b/version.h
index eddf72c42d..23e5dbbe4d 100644
--- a/version.h
+++ b/version.h
@@ -1,5 +1,5 @@
#define RUBY_VERSION "1.9.3"
-#define RUBY_PATCHLEVEL 73
+#define RUBY_PATCHLEVEL 74
#define RUBY_RELEASE_DATE "2012-02-09"
#define RUBY_RELEASE_YEAR 2012