From 0306f5581a8a86c4b0c176e1182fd755bc9694e1 Mon Sep 17 00:00:00 2001 From: Oskar Eichler Date: Sat, 29 Aug 2026 22:53:41 +0200 Subject: [PATCH] Match CRuby digest equality coercion on JRuby --- ext/java/org/jruby/ext/digest/RubyDigest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ext/java/org/jruby/ext/digest/RubyDigest.java b/ext/java/org/jruby/ext/digest/RubyDigest.java index be70ae0..b2385c7 100644 --- a/ext/java/org/jruby/ext/digest/RubyDigest.java +++ b/ext/java/org/jruby/ext/digest/RubyDigest.java @@ -58,6 +58,7 @@ import org.jruby.runtime.builtin.IRubyObject; import org.jruby.util.ArraySupport; import org.jruby.util.ByteList; +import org.jruby.util.TypeConverter; import org.jruby.util.log.Logger; import org.jruby.util.log.LoggerFactory; @@ -302,7 +303,9 @@ public static IRubyObject op_equal(ThreadContext context, IRubyObject self, IRub str2 = digest(context, oth, null).convertToString(); } else { str1 = to_s(context, self).convertToString(); - str2 = oth.convertToString(); + IRubyObject converted = TypeConverter.checkStringType(context.runtime, oth); + if (converted.isNil()) return context.fals; + str2 = (RubyString) converted; } boolean ret = str1.bytesize(context).eql(str2.bytesize(context)) && (str1.eql(str2)); return ret ? context.tru : context.fals;