1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* lib/mkmf.rb (check_sizeof): should return integer always.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@30068 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
nobu 2010-12-03 10:48:12 +00:00
parent 693a6cde25
commit 7bb94fa3f5
6 changed files with 99 additions and 11 deletions

View file

@ -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.
Wed Dec 1 22:05:32 2010 NAKAMURA Usaku <usa@ruby-lang.org>
* numeric.c (Init_Numeric): fixed a potential bug when using bccwin32

View file

@ -1006,14 +1006,7 @@ def check_sizeof(type, headers = nil, opts = "", &b)
x ? super : "failed"
end
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

37
test/mkmf/base.rb Normal file
View file

@ -0,0 +1,37 @@
require 'test/unit'
require 'mkmf'
require 'tmpdir'
$extout = '$(topdir)/'+RbConfig::CONFIG["EXTOUT"]
RbConfig::CONFIG['topdir'] = CONFIG['topdir'] = File.expand_path(CONFIG['topdir'])
RbConfig::CONFIG["extout"] = CONFIG["extout"] = $extout
$INCFLAGS << " -I."
$extout_prefix = "$(extout)$(target_prefix)/"
class TestMkmf < Test::Unit::TestCase
def setup
@tmpdir = Dir.mktmpdir
@curdir = Dir.pwd
@mkmfobj = Object.new
Dir.chdir(@tmpdir)
class << (@output = "")
def flush; end
def reopen(*) end
alias write <<
end
$stdout = @output
end
def teardown
$stdout = STDOUT
Dir.chdir(@curdir)
FileUtils.rm_rf(@tmpdir)
end
def mkmf(*args, &block)
@mkmfobj.instance_eval(*args, &block)
end
def default_test
end
end

View file

@ -0,0 +1,36 @@
require File.join(File.dirname(__FILE__), 'base')
class TestMkmf
class TestFindExecutable < TestMkmf
class F
def do_find_executable(name)
find_executable(name)
end
end
def test_find_executable
bug2669 = '[ruby-core:27912]'
path, ENV["PATH"] = ENV["PATH"], path
ENV["PATH"] = @tmpdir
f = F.new
name = "foobar#{$$}#{rand(1000)}"
if /mswin\d|mingw|cygwin/ =~ RUBY_PLATFORM
exts = %w[.exe .com .cmd .bat]
else
exts = [""]
end
exts.each do |ext|
full = name+ext
begin
open(full, "w") {|ff| ff.chmod(0755)}
result = f.do_find_executable(name)
ensure
File.unlink(full)
end
assert_equal("#{@tmpdir}/#{name}#{ext}", result, bug2669)
end
ensure
ENV["PATH"] = path
end
end
end

18
test/mkmf/test_sizeof.rb Normal file
View file

@ -0,0 +1,18 @@
require File.join(File.dirname(__FILE__), 'base')
class TestMkmf
class TestSizeof < TestMkmf
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;"
}
assert_equal(1, mkmf {check_sizeof("test1_t", "confdefs.h")})
end
end
end

View file

@ -1,7 +1,7 @@
#define RUBY_VERSION "1.8.8"
#define RUBY_RELEASE_DATE "2010-12-01"
#define RUBY_RELEASE_DATE "2010-12-03"
#define RUBY_VERSION_CODE 188
#define RUBY_RELEASE_CODE 20101201
#define RUBY_RELEASE_CODE 20101203
#define RUBY_PATCHLEVEL -1
#define RUBY_VERSION_MAJOR 1
@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 8
#define RUBY_RELEASE_YEAR 2010
#define RUBY_RELEASE_MONTH 12
#define RUBY_RELEASE_DAY 1
#define RUBY_RELEASE_DAY 3
#define NO_STRING_LITERAL_CONCATENATION 1
#ifdef RUBY_EXTERN