Skip to content

Commit bc30597

Browse files
committed
handle RubyString#setByteListShared with backwards compatibility
1 parent a8168e3 commit bc30597

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

src/main/java/org/jruby/ext/openssl/Cipher.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1267,8 +1267,7 @@ public IRubyObject set_auth_tag(final ThreadContext context, final IRubyObject t
12671267
throw newCipherError(context.runtime, "authentication tag not supported by this cipher");
12681268
}
12691269
final RubyString auth_tag = tag.asString();
1270-
this.auth_tag = auth_tag.getByteList();
1271-
auth_tag.setByteListShared();
1270+
this.auth_tag = StringHelper.setByteListShared(auth_tag);
12721271
return auth_tag;
12731272
}
12741273

@@ -1290,8 +1289,7 @@ public IRubyObject set_auth_data(final ThreadContext context, final IRubyObject
12901289
throw newCipherError(context.runtime, "authentication data not supported by this cipher");
12911290
}
12921291
final RubyString auth_data = data.asString();
1293-
this.auth_data = auth_data.getByteList();
1294-
auth_data.setByteListShared();
1292+
this.auth_data = StringHelper.setByteListShared(auth_data);
12951293
return auth_data;
12961294
}
12971295

src/main/java/org/jruby/ext/openssl/StringHelper.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,17 @@ static RubyString newString(final Ruby runtime, final byte[] bytes, final int co
6161
return RubyString.newString(runtime, byteList);
6262
}
6363

64+
static ByteList setByteListShared(final RubyString str) {
65+
try {
66+
str.setByteListShared();
67+
return str.getByteList();
68+
}
69+
catch (NoSuchMethodError err) { // JRuby 1.6
70+
RubyString dup = (RubyString) str.dup();
71+
return dup.getByteList();
72+
}
73+
}
74+
6475
static RubyString newUTF8String(final Ruby runtime, final ByteList bytes) {
6576
ByteList byteList = new ByteList(RubyEncoding.encodeUTF8(bytes), UTF8Encoding.INSTANCE, false);
6677
return new RubyString(runtime, runtime.getString(), byteList);

0 commit comments

Comments
 (0)