diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-19 07:13:19 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-03-19 07:13:19 +0900 |
| commit | 087e1719e45ae51b728aa8b15edd30d9ef757a98 (patch) | |
| tree | 92080f1f4dbc5e97a7f68ba73a441f42264b32cc | |
| parent | 0d96c1bb4098c4b98f495265d6de53cda5be12a6 (diff) | |
| download | mruby-087e1719e45ae51b728aa8b15edd30d9ef757a98.tar.gz mruby-087e1719e45ae51b728aa8b15edd30d9ef757a98.zip | |
`Float#divmod` with zero should cause `ZeroDivisionError`; #5384
| -rw-r--r-- | src/numeric.c | 8 |
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 { |
