diff options
author | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-02-09 07:20:53 +0000 |
---|---|---|
committer | naruse <naruse@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-02-09 07:20:53 +0000 |
commit | b97d91dd4afe7861c8301776cae3b9e3e58e2556 (patch) | |
tree | 12af6d1eff0c433c07761b5060cedf5e37e47853 /ext | |
parent | c65134a3278b918fe3daf0dbb147c85c7d89d416 (diff) |
merge revision(s) 34504,34506,34507,34508:
* ext/dl/lib/types.rb: Win64 support.
* 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.
* ext/dl/lib/value.rb (DL::ValueUtil.{unsigned_value,signed_value}):
currenly pack/unpack does not accept "q!" and "Q!".
* test/ruby/memory_status.rb (Memory::Win32): 64bit support.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@34509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-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 |
3 files changed, 12 insertions, 4 deletions
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: |