diff options
author | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-27 01:43:14 +0000 |
---|---|---|
committer | matz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-11-27 01:43:14 +0000 |
commit | 5337b9b5f6c97e4b002253b83a87e88119b13cfa (patch) | |
tree | 9e1d99695c2fed66259cc39bf3f8972d0ef496d4 /ext | |
parent | b0f3bd5d25cc92c427baa58913bff70e792244e6 (diff) | |
download | ruby-5337b9b5f6c97e4b002253b83a87e88119b13cfa.tar.gz |
* ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should return
Integer for #div operation.
* ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should raise
ZeroDivisionError if divisor is zero. [ruby-dev:37207]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@20368 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ext')
-rw-r--r-- | ext/bigdecimal/bigdecimal.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/ext/bigdecimal/bigdecimal.c b/ext/bigdecimal/bigdecimal.c index 0a43570903..62ff80a860 100644 --- a/ext/bigdecimal/bigdecimal.c +++ b/ext/bigdecimal/bigdecimal.c @@ -1169,7 +1169,10 @@ BigDecimal_div2(int argc, VALUE *argv, VALUE self) Real *mod; obj = BigDecimal_DoDivmod(self,b,&div,&mod); if(obj!=(VALUE)0) return obj; - return ToValue(div); + if(VpIsNaN(div) && rb_equal(b, INT2FIX(0))) { + rb_raise(rb_eZeroDivError, "divided by 0"); + } + return BigDecimal_to_i(ToValue(div)); } else { /* div in BigDecimal sense */ U_LONG ix = (U_LONG)GetPositiveInt(n); if(ix==0) return BigDecimal_div(self,b); |