From 7e978b1070bc12ed274a55bee4c675afc6b2c9a6 Mon Sep 17 00:00:00 2001 From: eregon Date: Sat, 28 Dec 2013 22:28:39 +0000 Subject: [PATCH] * compar.c (cmp_eq_recursive): Fix the return value, the value for failed #<=> should be nil. It was raising a NoMethodError for the test case TestComparable#test_no_cmp (undefined method `>' for false:FalseClass). Yet one more reason for #7688. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@44453 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 +++++++ compar.c | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5828b1fb21..f293481f87 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Sun Dec 29 07:27:51 2013 Benoit Daloze + + * compar.c (cmp_eq_recursive): Fix the return value, the value for + failed #<=> should be nil. It was raising a NoMethodError for + the test case TestComparable#test_no_cmp (undefined method `>' + for false:FalseClass). Yet one more reason for #7688. + Sat Dec 28 22:21:59 2013 Benoit Daloze * object.c (Kernel#<=>) surround Comparable operators with tags. diff --git a/compar.c b/compar.c index 2f4db291a4..fa638eeb79 100644 --- a/compar.c +++ b/compar.c @@ -54,7 +54,7 @@ rb_invcmp(VALUE x, VALUE y) static VALUE cmp_eq_recursive(VALUE arg1, VALUE arg2, int recursive) { - if (recursive) return Qfalse; + if (recursive) return Qnil; return rb_funcallv(arg1, cmp, 1, &arg2); }