diff --git a/sprintf.c b/sprintf.c index 0b7a70a50c..b13530614f 100644 --- a/sprintf.c +++ b/sprintf.c @@ -811,7 +811,7 @@ rb_str_format(int argc, const VALUE *argv, VALUE fmt) if (FIXNUM_P(num)) { if ((SIGNED_VALUE)num < 0) { long n = -FIX2LONG(num); - num = LONG2FIX(n); + num = LONG2NUM(n); sign = -1; } } diff --git a/test/ruby/test_sprintf.rb b/test/ruby/test_sprintf.rb index 9b972dcbaa..3f821f7a5d 100644 --- a/test/ruby/test_sprintf.rb +++ b/test/ruby/test_sprintf.rb @@ -227,6 +227,10 @@ class TestSprintf < Test::Unit::TestCase bug11766 = '[ruby-core:71806] [Bug #11766]' assert_equal("x"*10+" 1.0", sprintf("x"*10+"%8.1f", 1r), bug11766) + + require 'rbconfig/sizeof' + fmin, fmax = RbConfig::LIMITS.values_at("FIXNUM_MIN", "FIXNUM_MAX") + assert_match(/\A-\d+\.\d+\z/, sprintf("%f", Rational(fmin, fmax))) end def test_rational_precision diff --git a/version.h b/version.h index a82aed30ce..861abfb5ea 100644 --- a/version.h +++ b/version.h @@ -11,7 +11,7 @@ # define RUBY_VERSION_MINOR RUBY_API_VERSION_MINOR #define RUBY_VERSION_TEENY 6 #define RUBY_RELEASE_DATE RUBY_RELEASE_YEAR_STR"-"RUBY_RELEASE_MONTH_STR"-"RUBY_RELEASE_DAY_STR -#define RUBY_PATCHLEVEL 236 +#define RUBY_PATCHLEVEL 237 #include "ruby/version.h" #include "ruby/internal/abi.h"