From c480ac4457d026593c50f6c2704ac74f9255b2f0 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 3 Aug 2021 16:35:31 +0900 Subject: numeric_ext.c: `modulo` and `remainder` should handle infinite argument. --- mrbgems/mruby-numeric-ext/src/numeric_ext.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'mrbgems/mruby-numeric-ext/src/numeric_ext.c') diff --git a/mrbgems/mruby-numeric-ext/src/numeric_ext.c b/mrbgems/mruby-numeric-ext/src/numeric_ext.c index fb8ea53b1..59b51d092 100644 --- a/mrbgems/mruby-numeric-ext/src/numeric_ext.c +++ b/mrbgems/mruby-numeric-ext/src/numeric_ext.c @@ -83,6 +83,7 @@ int_remainder(mrb_state *mrb, mrb_value x) mrb_float n = (mrb_float)a; mrb_float m = mrb_as_float(mrb, y); + if (isinf(m)) return mrb_float_value(mrb, n); return mrb_float_value(mrb, n-m*trunc(n/m)); } #endif @@ -97,6 +98,7 @@ flo_remainder(mrb_state *mrb, mrb_value self) a = mrb_float(self); mrb_get_args(mrb, "f", &b); if (b == 0) zerodiv(mrb); + if (isinf(b)) return mrb_float_value(mrb, a); return mrb_float_value(mrb, a-b*trunc(a/b)); } #endif -- cgit v1.2.3