Skip to content

Commit 0602b9a

Browse files
aardvark179eregon
authored andcommitted
Fix for dummy encodings and Truffle Strings.
1 parent b4705ae commit 0602b9a

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

src/main/java/org/truffleruby/core/encoding/RubyEncoding.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.oracle.truffle.api.library.ExportMessage;
1717
import com.oracle.truffle.api.strings.TruffleString;
1818
import org.jcodings.Encoding;
19+
import org.jcodings.specific.ASCIIEncoding;
1920
import org.jcodings.specific.USASCIIEncoding;
2021
import org.truffleruby.RubyContext;
2122
import org.truffleruby.core.kernel.KernelNodes;
@@ -50,7 +51,18 @@ public final class RubyEncoding extends ImmutableRubyObjectNotCopyable
5051
public RubyEncoding(Encoding jcoding, ImmutableRubyString name, int index) {
5152
assert name.getEncodingUncached() == Encodings.US_ASCII;
5253
this.jcoding = Objects.requireNonNull(jcoding);
53-
this.tencoding = Objects.requireNonNull(TStringUtils.jcodingToTEncoding(jcoding));
54+
55+
TruffleString.Encoding tencoding;
56+
try {
57+
tencoding = TStringUtils.jcodingToTEncoding(jcoding);
58+
} catch (IllegalArgumentException e) {
59+
if (jcoding.isDummy()) {
60+
tencoding = TStringUtils.jcodingToTEncoding(ASCIIEncoding.INSTANCE);
61+
} else {
62+
throw e;
63+
}
64+
}
65+
this.tencoding = Objects.requireNonNull(tencoding);
5466
this.name = Objects.requireNonNull(name);
5567
this.index = index;
5668

0 commit comments

Comments
 (0)