Skip to content

Commit 8fd1403

Browse files
committed
Ensure the tstring and encodings are never null for Strings and Symbols
1 parent 2fe8c33 commit 8fd1403

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

src/main/java/org/truffleruby/core/string/RubyString.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@
3434
import com.oracle.truffle.api.object.Shape;
3535
import org.truffleruby.language.library.RubyStringLibrary;
3636

37+
import java.util.Objects;
38+
3739
@ExportLibrary(RubyLibrary.class)
3840
@ExportLibrary(InteropLibrary.class)
3941
@ImportStatic(RubyBaseNode.class)
@@ -53,19 +55,19 @@ public RubyString(
5355
super(rubyClass, shape);
5456
assert tstring.isCompatibleToUncached(rubyEncoding.tencoding);
5557
this.frozen = frozen;
56-
this.tstring = tstring;
57-
this.encoding = rubyEncoding;
58+
this.tstring = Objects.requireNonNull(tstring);
59+
this.encoding = Objects.requireNonNull(rubyEncoding);
5860
}
5961

6062
public void setTString(AbstractTruffleString tstring) {
6163
assert tstring.isCompatibleToUncached(getEncodingUncached().tencoding);
62-
this.tstring = tstring;
64+
this.tstring = Objects.requireNonNull(tstring);
6365
}
6466

6567
public void setTString(AbstractTruffleString tstring, RubyEncoding encoding) {
6668
assert tstring.isCompatibleToUncached(encoding.tencoding);
67-
this.tstring = tstring;
68-
this.encoding = encoding;
69+
this.tstring = Objects.requireNonNull(tstring);
70+
this.encoding = Objects.requireNonNull(encoding);
6971
}
7072

7173
public void clearCodeRange() {

src/main/java/org/truffleruby/core/symbol/RubySymbol.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
import org.truffleruby.parser.IdentifierType;
3232
import org.truffleruby.parser.Identifiers;
3333

34+
import java.util.Objects;
35+
3436
@ExportLibrary(InteropLibrary.class)
3537
public final class RubySymbol extends ImmutableRubyObjectNotCopyable implements TruffleObject {
3638

@@ -51,9 +53,9 @@ public final class RubySymbol extends ImmutableRubyObjectNotCopyable implements
5153
RubySymbol(String string, TruffleString tstring, RubyEncoding encoding, long id) {
5254
assert tstring.isManaged();
5355
assert tstring.isCompatibleToUncached(encoding.tencoding);
54-
this.encoding = encoding;
55-
this.string = string;
56-
this.tstring = tstring;
56+
this.encoding = Objects.requireNonNull(encoding);
57+
this.string = Objects.requireNonNull(string);
58+
this.tstring = Objects.requireNonNull(tstring);
5759
this.javaStringHashCode = string.hashCode();
5860
this.id = id;
5961
this.type = Identifiers.stringToType(string);

0 commit comments

Comments
 (0)