Issue #4848 has been reported by Phil Ross.

----------------------------------------
Bug #4848: DateTime.jd raises 'invalid fraction' when called with more than one argument
http://redmine.ruby-lang.org/issues/4848

Author: Phil Ross
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-06-07 trunk 31946) [i686-linux]


Since trunk revision 31862, the DateTime.jd function raises an ArgumentError with message 'invalid fraction' when it is called with more than one argument. For example,

>> DateTime.jd(Rational(39014323, 16), 0)
ArgumentError: invalid fraction
        from (irb):2:in `jd'
        from (irb):2
        from /home/psr/ruby/build/bin/irb:12:in `<main>'

Calling DateTime.jd without the second parameter (and relying on the default value) works as expected:

>> DateTime.jd(Rational(39014323, 16))
=> #<DateTime: 1963-12-31T04:30:00+00:00 ((2438395j,16200s,0n),+0s,2299161j)>

I think the problem may be the 'argc > n' tests in the num2num_with_frac and num2int_with_frac #defines in ext/date/date_core.c. The attached patch changes the tests to 'argc < n'. This makes jd function properly again with more than one argument.


-- 
http://redmine.ruby-lang.org