summaryrefslogtreecommitdiffhomepage
path: root/src/numeric.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-03-19 07:13:19 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-03-19 07:13:19 +0900
commit087e1719e45ae51b728aa8b15edd30d9ef757a98 (patch)
tree92080f1f4dbc5e97a7f68ba73a441f42264b32cc /src/numeric.c
parent0d96c1bb4098c4b98f495265d6de53cda5be12a6 (diff)
downloadmruby-087e1719e45ae51b728aa8b15edd30d9ef757a98.tar.gz
mruby-087e1719e45ae51b728aa8b15edd30d9ef757a98.zip
`Float#divmod` with zero should cause `ZeroDivisionError`; #5384
Diffstat (limited to 'src/numeric.c')
-rw-r--r--src/numeric.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/src/numeric.c b/src/numeric.c
index c536f0614..74e3a8b82 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -375,13 +375,9 @@ flodivmod(mrb_state *mrb, double x, double y, mrb_float *divp, mrb_float *modp)
goto exit;
}
if (y == 0.0) {
- if (x == 0) div = NAN;
- else if (x > 0.0) div = INFINITY;
- else div = -INFINITY; /* x < 0.0 */
- mod = NAN;
- goto exit;
+ int_zerodiv(mrb);
}
- if ((x == 0.0) || (isinf(y) && !isinf(x))) {
+ if (isinf(y) && !isinf(x)) {
mod = x;
}
else {