From 98aceb0ca8b24226543779ac06416772ca88ef74 Mon Sep 17 00:00:00 2001 From: Charles Oliver Nutter Date: Tue, 11 Feb 2025 15:52:35 -0600 Subject: [PATCH] Use private lookup for these handles publicLookup seems to have trouble when there are multiple versions of a signature class in the classloader hierarchy. Fixes ruby/stringio#112 --- ext/java/org/jruby/ext/stringio/StringIO.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/java/org/jruby/ext/stringio/StringIO.java b/ext/java/org/jruby/ext/stringio/StringIO.java index cc54c32..5f4a1d7 100644 --- a/ext/java/org/jruby/ext/stringio/StringIO.java +++ b/ext/java/org/jruby/ext/stringio/StringIO.java @@ -1529,7 +1529,7 @@ public IRubyObject write(ThreadContext context, IRubyObject[] args) { static { MethodHandle cat, modify, substr; - MethodHandles.Lookup lookup = MethodHandles.publicLookup(); + MethodHandles.Lookup lookup = MethodHandles.lookup(); try { cat = lookup.findVirtual(RubyString.class, "catWithCodeRange", MethodType.methodType(RubyString.class, RubyString.class)); modify = lookup.findVirtual(RubyString.class, "modifyAndClearCodeRange", MethodType.methodType(void.class));