Skip to content

Commit

Permalink
Showing 1 changed file with 6 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -3218,7 +3218,7 @@ public DynamicObject stringFromCodepointSimple(int code, DynamicObject encoding,
}

@TruffleBoundary(throwsControlFlowException = true)
@Specialization(guards = {"isRubyEncoding(rubyEncoding)", "!isSimple(code, rubyEncoding)"})
@Specialization(guards = { "isRubyEncoding(rubyEncoding)", "!isSimple(code, rubyEncoding)", "isCodepoint(code)" })
public DynamicObject stringFromCodepoint(long code, DynamicObject rubyEncoding) {
final Encoding encoding = EncodingOperations.getEncoding(rubyEncoding);
final int length;
@@ -3248,6 +3248,11 @@ public DynamicObject stringFromCodepoint(long code, DynamicObject rubyEncoding)
return createString(RopeOperations.create(bytes, encoding, CodeRange.CR_VALID));
}

protected boolean isCodepoint(long code) {
// Fits in an unsigned int
return code >= 0 && code < (1L << 32);
}

protected boolean isSimple(long code, DynamicObject encoding) {
final Encoding enc = EncodingOperations.getEncoding(encoding);

0 comments on commit a8c2830

Please sign in to comment.