From 56a35131a455ea1d00711e8e3f4f06a51c32f967 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 22 Apr 2022 16:09:30 +0900 Subject: [PATCH] numeric.c (mrb_cmp): should not raise NoMethodError. Even when `obj1` does not have `<=>` method. --- src/numeric.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/numeric.c b/src/numeric.c index e55ee591b..be49c9e70 100644 --- a/src/numeric.c +++ b/src/numeric.c @@ -1929,6 +1929,7 @@ mrb_cmp(mrb_state *mrb, mrb_value obj1, mrb_value obj2) return -2; return mrb_str_cmp(mrb, obj1, obj2); default: + if (!mrb_respond_to(mrb, obj1, MRB_OPSYM(cmp))) return -2; v = mrb_funcall_id(mrb, obj1, MRB_OPSYM(cmp), 1, obj2); if (mrb_nil_p(v) || !mrb_integer_p(v)) return -2;