diff --git a/CHANGES.current b/CHANGES.current index d5b0062be..609e04010 100644 --- a/CHANGES.current +++ b/CHANGES.current @@ -1,6 +1,10 @@ Version 1.3.40 (in progress) ============================ +2009-06-26: olly + [Ruby] Fix to handle FIXNUM values greater than MAXINT passed for a + double parameter. + 2009-06-24: wsfulton Fix wrapping methods with default arguments and the compactdefaultargs feature where a class is passed by value and is assigned a default value. The SwigValueWrapper diff --git a/Examples/test-suite/ruby/primitive_types_runme.rb b/Examples/test-suite/ruby/primitive_types_runme.rb index 9fde5b3dd..0024c9696 100644 --- a/Examples/test-suite/ruby/primitive_types_runme.rb +++ b/Examples/test-suite/ruby/primitive_types_runme.rb @@ -50,6 +50,9 @@ end raise RuntimeError if fail != 1 +# Test a number which won't fit in a 32 bit integer and is represented +# as a FIXNUM by Ruby. +raise RuntimeError if val_double(51767811298) != 51767811298 raise RuntimeError if val_double_2(1.0) != 4.0 raise RuntimeError if val_double_2(1) != 4 diff --git a/Lib/ruby/rubyprimtypes.swg b/Lib/ruby/rubyprimtypes.swg index c2d577995..9e6c361ad 100644 --- a/Lib/ruby/rubyprimtypes.swg +++ b/Lib/ruby/rubyprimtypes.swg @@ -197,7 +197,7 @@ SWIG_AsVal_dec(unsigned long long)(VALUE obj, unsigned long long *val) } %fragment(SWIG_AsVal_frag(double),"header",fragment="SWIG_ruby_failed") { -%ruby_aux_method(double, NUM2DBL, (type == T_FLOAT ? NUM2DBL(obj) : (type == T_FIXNUM ? (double) FIX2INT(obj) : rb_big2dbl(obj)))) +%ruby_aux_method(double, NUM2DBL, NUM2DBL(obj)) SWIGINTERN int SWIG_AsVal_dec(double)(VALUE obj, double *val)