diff options
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -99,7 +99,15 @@ rb_equal(VALUE obj1, VALUE obj2) int rb_eql(VALUE obj1, VALUE obj2) { - return RTEST(rb_funcall(obj1, id_eql, 1, obj2)); + VALUE result; + + if (obj1 == obj2) return Qtrue; + result = rb_eql_opt(obj1, obj2); + if (result == Qundef) { + result = rb_funcall(obj1, id_eql, 1, obj2); + } + if (RTEST(result)) return Qtrue; + return Qfalse; } /* |