Bug #4848
closedDateTime.jd raises 'invalid fraction' when called with more than one argument
Description
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:injd' from (irb):2 from /home/psr/ruby/build/bin/irb:12:in
'
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.
Files
Updated by philr (Phil ) over 13 years ago
=begin
The second example has gone partially missing above (because RedMine doesn't appear to be escaping the < and >). It should have read:
DateTime.jd(Rational(39014323, 16))
#<DateTime: 1963-12-31T04:30:00+00:00 ((2438395j,16200s,0n),+0s,2299161j)>
=end
Updated by tadf (tadayoshi funaba) over 13 years ago
- Status changed from Open to Rejected
- Assignee set to tadf (tadayoshi funaba)
i've never seen such a nonsense patch.
this is not a bug.
you cannot specify both fraction and hour.
DateTime.new(2001,2,28.5,12) should mean 2001-03-31??
we have to be cautious about such a abuse.