Bug #4848

DateTime.jd raises 'invalid fraction' when called with more than one argument

Added by philr (Phil  ) about 6 years ago. Updated about 6 years ago.

Target version:
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

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

DateTime.jd(Rational(39014323, 16))
=> #

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.

date_core_num2_argc_tests.diff (573 Bytes) date_core_num2_argc_tests.diff Patch to change 'argc > n' to 'argc < n' in num2num_with_frac and num2int_with_frac philr (Phil  ), 06/07/2011 06:01 AM


#1 [ruby-core:36803] Updated by philr (Phil  ) about 6 years ago

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))

#2 [ruby-core:36812] Updated by tadf (tadayoshi funaba) about 6 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.,2,28.5,12) should mean 2001-03-31??

we have to be cautious about such a abuse.

Also available in: Atom PDF