lib/bigdecimal: errors in comparisons [patch]
$ ruby -r bigdecimal -e 'p BigDecimal.new("1") < nil'
expected: an error like with any other mathematical type:
-e:1:in `<': comparison of BigDecimal with nil failed (ArgumentError)
$ ruby -r bigdecimal -e 'p BigDecimal.new("1") == nil'
expected: false like with any other Ruby object
$ ruby -r bigdecimal -e 'p BigDecimal.new("NaN") < 1'
expected: false, like with any other mathematical comparison
I'll commit the attached patch in a few days (for 1.8 & 1.9) unless there are arguments against it.
ext/bigdecimal/bigdecimal.c: Backport #2349 [ruby-core:26646]; fix comparisons. Also fix a bunch of bugs that lead to broken-ness and failing tests.
test/bigdecimal/test_bigdecimal.rb: Backport #2349 [ruby-core:26646]; added a test suite.
test/ruby/test_exception.rb: The test suite was breaking ZeroDivisionError, which in turn would break bigdecimal/test_bigdecimal.rb. Made a simple fix that keeps that test but does so non-destructively.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_6@29025 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Updated by marcandre (Marc-Andre Lafortune) almost 10 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r25765.
Marc-Andre, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
Updated by shyouhei (Shyouhei Urabe) over 9 years ago
- Assignee changed from shyouhei (Shyouhei Urabe) to wyhaines (Kirk Haines)
Well, a litte inspection shows me that
- 1.9.2dev, 1.8.8dev, and 1.8.7 behave in the same way (as marcandre expected)
- 1.9.1, and 1.8.6 behave as described in the original post
So I suspect 1.9.1 and 1.8.6 are buggy here, both should backport this.