diff options
-rw-r--r-- | ChangeLog | 19 | ||||
-rw-r--r-- | ext/dl/lib/dl/types.rb | 10 | ||||
-rw-r--r-- | ext/dl/lib/dl/value.rb | 4 | ||||
-rw-r--r-- | ext/fiddle/conversions.c | 2 | ||||
-rw-r--r-- | test/ruby/memory_status.rb | 6 | ||||
-rw-r--r-- | version.h | 2 |
6 files changed, 37 insertions, 6 deletions
@@ -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", @@ -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 |