diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | lib/mkmf.rb | 9 | ||||
-rw-r--r-- | test/mkmf/test_sizeof.rb | 8 |
3 files changed, 12 insertions, 9 deletions
@@ -1,3 +1,7 @@ +Fri Dec 3 19:48:11 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * lib/mkmf.rb (check_sizeof): should return integer always. + Fri Dec 3 12:54:48 2010 NAKAMURA Usaku <usa@ruby-lang.org> * win32/Makefile.sub (RCFLAGS): VC10 and after only. fixed the problem diff --git a/lib/mkmf.rb b/lib/mkmf.rb index 7539cf5dba..3e078779c7 100644 --- a/lib/mkmf.rb +++ b/lib/mkmf.rb @@ -1105,14 +1105,7 @@ def check_sizeof(type, headers = nil, opts = "", &b) expr = "sizeof((*rbcv_ptr_)#{"." << member if member})" fmt = STRING_OR_FAILED_FORMAT checking_for checking_message("size of #{type}", headers), fmt do - if UNIVERSAL_INTS.include?(type) - type - elsif size = UNIVERSAL_INTS.find {|t| - try_static_assert("#{expr} == sizeof(#{t})", prelude, opts, &b) - } - $defs.push(format("-DSIZEOF_%s=SIZEOF_%s", type.tr_cpp, size.tr_cpp)) - size - elsif size = try_constant(expr, prelude, opts, &b) + if size = try_constant(expr, prelude, opts, &b) $defs.push(format("-DSIZEOF_%s=%s", type.tr_cpp, size)) size end diff --git a/test/mkmf/test_sizeof.rb b/test/mkmf/test_sizeof.rb index d35811f3f6..a44e609c06 100644 --- a/test/mkmf/test_sizeof.rb +++ b/test/mkmf/test_sizeof.rb @@ -2,7 +2,13 @@ require_relative 'base' class TestMkmf class TestSizeof < TestMkmf - def test_sizeof + def test_sizeof_builtin + %w[char short int long float double void*].each do |type| + assert_kind_of(Integer, mkmf {check_sizeof(type)}) + end + end + + def test_sizeof_struct open("confdefs.h", "w") {|f| f.puts "typedef struct {char x;} test1_t;" } |