From 7031b99bca22bd8fa1d078b182226f59007250f0 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 3 Dec 2010 10:48:12 +0000 Subject: [PATCH] * lib/mkmf.rb (check_sizeof): should return integer always. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@30068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ lib/mkmf.rb | 9 +-------- test/mkmf/test_sizeof.rb | 8 +++++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 20aff2b860..cac81c48cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Dec 3 19:48:11 2010 Nobuyoshi Nakada + + * lib/mkmf.rb (check_sizeof): should return integer always. + Fri Dec 3 12:54:48 2010 NAKAMURA Usaku * 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;" }