Skip to content

Commit 8c588f4

Browse files
committed
[Truffle] Clear all major findbugs bugs.
1 parent 2201765 commit 8c588f4

14 files changed

Lines changed: 63 additions & 33 deletions

core/src/main/java/org/jruby/truffle/nodes/core/EncodingConverterNodes.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import org.jruby.Ruby;
1919
import org.jruby.runtime.ThreadContext;
2020
import org.jruby.runtime.builtin.IRubyObject;
21-
import org.jruby.runtime.encoding.EncodingService;
2221
import org.jruby.truffle.runtime.RubyContext;
2322
import org.jruby.truffle.runtime.core.*;
2423
import org.jruby.util.ByteList;
@@ -62,8 +61,8 @@ public RubyArray convpath(RubyEncodingConverter converter) {
6261

6362
v = new RubyArray(getContext().getCoreLibrary().getArrayClass(),
6463
new Object[]{
65-
RubyEncoding.getEncoding(getContext(), source),
66-
RubyEncoding.getEncoding(getContext(), destination)
64+
RubyEncoding.getEncoding(source),
65+
RubyEncoding.getEncoding(destination)
6766
}, 2);
6867
}
6968
result[r++] = v;
@@ -156,8 +155,8 @@ public void call(byte[] source, byte[] destination, int depth) {
156155

157156
v = new RubyArray(getContext().getCoreLibrary().getArrayClass(),
158157
new Object[]{
159-
RubyEncoding.getEncoding(getContext(), destinationEncoding),
160-
RubyEncoding.getEncoding(getContext(), sourceEncoding)
158+
RubyEncoding.getEncoding(destinationEncoding),
159+
RubyEncoding.getEncoding(sourceEncoding)
161160
}, 2);
162161
}
163162

core/src/main/java/org/jruby/truffle/nodes/core/EncodingNodes.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public RubyEncoding defaultExternal() {
4949
encoding = UTF8Encoding.INSTANCE;
5050
}
5151

52-
return RubyEncoding.getEncoding(getContext(), encoding);
52+
return RubyEncoding.getEncoding(encoding);
5353
}
5454

5555
}
@@ -75,7 +75,7 @@ public RubyEncoding defaultInternal() {
7575
encoding = UTF8Encoding.INSTANCE;
7676
}
7777

78-
return RubyEncoding.getEncoding(getContext(), encoding);
78+
return RubyEncoding.getEncoding(encoding);
7979
}
8080

8181
}
@@ -139,7 +139,7 @@ public FindNode(FindNode prev) {
139139
public RubyEncoding find(RubyString name) {
140140
notDesignedForCompilation();
141141

142-
return RubyEncoding.getEncoding(getContext(), name.toString());
142+
return RubyEncoding.getEncoding(name.toString());
143143
}
144144

145145
}

core/src/main/java/org/jruby/truffle/nodes/core/IONodes.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.io.FileInputStream;
2323
import java.io.IOException;
2424
import java.io.InputStreamReader;
25+
import java.nio.charset.StandardCharsets;
2526
import java.util.ArrayList;
2627
import java.util.List;
2728

@@ -75,7 +76,7 @@ public RubyArray readLines(RubyString file) {
7576

7677
final List<Object> lines = new ArrayList<>();
7778

78-
try(final BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file.toString())))) {
79+
try(final BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file.toString()), StandardCharsets.UTF_8))) {
7980

8081
while (true) {
8182
final String line = reader.readLine();

core/src/main/java/org/jruby/truffle/nodes/core/KernelNodes.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747

4848
import java.io.*;
4949
import java.math.BigInteger;
50+
import java.nio.charset.StandardCharsets;
5051
import java.util.*;
5152

5253
@CoreClass(name = "Kernel")
@@ -90,7 +91,7 @@ public RubyString backtick(RubyString command) {
9091
}
9192

9293
final InputStream stdout = process.getInputStream();
93-
final InputStreamReader reader = new InputStreamReader(stdout);
94+
final InputStreamReader reader = new InputStreamReader(stdout, StandardCharsets.UTF_8);
9495

9596
final StringBuilder resultBuilder = new StringBuilder();
9697

@@ -1983,7 +1984,14 @@ public RubyString sprintf(Object[] args) {
19831984
notDesignedForCompilation();
19841985

19851986
final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
1986-
final PrintStream printStream = new PrintStream(outputStream);
1987+
1988+
final PrintStream printStream;
1989+
1990+
try {
1991+
printStream = new PrintStream(outputStream, true, StandardCharsets.UTF_8.name());
1992+
} catch (UnsupportedEncodingException e) {
1993+
throw new RuntimeException(e);
1994+
}
19871995

19881996
if (args.length > 0) {
19891997
final String format = args[0].toString();

core/src/main/java/org/jruby/truffle/nodes/core/StringNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -579,7 +579,7 @@ public EncodingNode(EncodingNode prev) {
579579
public RubyEncoding encoding(RubyString string) {
580580
notDesignedForCompilation();
581581

582-
return RubyEncoding.getEncoding(getContext(), string.getBytes().getEncoding());
582+
return RubyEncoding.getEncoding(string.getBytes().getEncoding());
583583
}
584584
}
585585

@@ -616,7 +616,7 @@ public ForceEncodingNode(ForceEncodingNode prev) {
616616
@Specialization
617617
public RubyString forceEncoding(RubyString string, RubyString encodingName) {
618618
notDesignedForCompilation();
619-
final RubyEncoding encoding = RubyEncoding.getEncoding(getContext(), encodingName.toString());
619+
final RubyEncoding encoding = RubyEncoding.getEncoding(encodingName.toString());
620620
return forceEncoding(string, encoding);
621621
}
622622

core/src/main/java/org/jruby/truffle/runtime/core/CoreLibrary.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import java.io.File;
3636
import java.io.IOException;
3737
import java.io.InputStreamReader;
38+
import java.nio.charset.StandardCharsets;
3839
import java.util.ArrayList;
3940
import java.util.List;
4041
import java.util.Map;
@@ -381,7 +382,7 @@ public void loadRubyCore(String fileName) {
381382
throw new RuntimeException("couldn't load Truffle core library " + fileName);
382383
}
383384

384-
source = Source.fromReader(new InputStreamReader(resource.getInputStream()), "core:/" + fileName);
385+
source = Source.fromReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8), "core:/" + fileName);
385386
} catch (IOException e) {
386387
throw new RuntimeException(e);
387388
}
@@ -861,7 +862,7 @@ public RubyHash getENV() {
861862
return envHash;
862863
}
863864

864-
public RubyEncoding getDefaultEncoding() { return RubyEncoding.getEncoding(context, "US-ASCII"); }
865+
public RubyEncoding getDefaultEncoding() { return RubyEncoding.getEncoding("US-ASCII"); }
865866

866867
private RubyHash getSystemEnv() {
867868
final List<KeyValue> entries = new ArrayList<>();

core/src/main/java/org/jruby/truffle/runtime/core/RubyEncoding.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.jruby.truffle.runtime.RubyContext;
1717
import org.jruby.util.ByteList;
1818

19+
import java.nio.charset.StandardCharsets;
1920
import java.util.HashMap;
2021
import java.util.Map;
2122

@@ -31,11 +32,11 @@ public class RubyEncoding extends RubyBasicObject {
3132
private final ByteList name;
3233
private final boolean dummy;
3334

34-
public static synchronized RubyEncoding getEncoding(RubyContext context, Encoding encoding) {
35-
return lookup.get(new String(encoding.getName()).toLowerCase());
35+
public static synchronized RubyEncoding getEncoding(Encoding encoding) {
36+
return lookup.get(new String(encoding.getName(), StandardCharsets.UTF_8).toLowerCase());
3637
}
3738

38-
public static RubyEncoding getEncoding(RubyContext context, String name) {
39+
public static RubyEncoding getEncoding(String name) {
3940
return lookup.get(name.toLowerCase());
4041
}
4142

core/src/main/java/org/jruby/truffle/runtime/core/RubyFile.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.jruby.truffle.runtime.RubyContext;
1414

1515
import java.io.*;
16+
import java.nio.charset.StandardCharsets;
1617

1718
/**
1819
* Represents the Ruby {@code File} class.
@@ -76,7 +77,7 @@ public static RubyFile open(RubyContext context, String fileName, String mode) {
7677

7778
if (mode.equals("rb")) {
7879
try {
79-
reader = new InputStreamReader(new FileInputStream(fileName));
80+
reader = new InputStreamReader(new FileInputStream(fileName), StandardCharsets.UTF_8);
8081
} catch (FileNotFoundException e) {
8182
throw new RuntimeException(e);
8283
}
@@ -86,15 +87,15 @@ public static RubyFile open(RubyContext context, String fileName, String mode) {
8687
reader = null;
8788

8889
try {
89-
writer = new OutputStreamWriter(new FileOutputStream(fileName));
90+
writer = new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.UTF_8);
9091
} catch (FileNotFoundException e) {
9192
throw new RuntimeException(e);
9293
}
9394
} else if (mode.equals("a") || mode.equals("ab")) {
9495
reader = null;
9596

9697
try {
97-
writer = new OutputStreamWriter(new FileOutputStream(fileName, true));
98+
writer = new OutputStreamWriter(new FileOutputStream(fileName, true), StandardCharsets.UTF_8);
9899
} catch (FileNotFoundException e) {
99100
throw new RuntimeException(e);
100101
}

core/src/main/java/org/jruby/truffle/runtime/core/RubyRegexp.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public Object matchCommon(ByteList bytes, boolean operator, boolean setNamedCapt
100100
if (setNamedCaptures && regex.numberOfNames() > 0) {
101101
for (Iterator<NameEntry> i = regex.namedBackrefIterator(); i.hasNext();) {
102102
final NameEntry e = i.next();
103-
final String name = new String(e.name, e.nameP, e.nameEnd - e.nameP).intern();
103+
final String name = new String(e.name, e.nameP, e.nameEnd - e.nameP, StandardCharsets.UTF_8).intern();
104104
setFrame(frame, name, getContext().getCoreLibrary().getNilObject());
105105
}
106106
}
@@ -156,7 +156,7 @@ public Object matchCommon(ByteList bytes, boolean operator, boolean setNamedCapt
156156
if (setNamedCaptures && regex.numberOfNames() > 0) {
157157
for (Iterator<NameEntry> i = regex.namedBackrefIterator(); i.hasNext();) {
158158
final NameEntry e = i.next();
159-
final String name = new String(e.name, e.nameP, e.nameEnd - e.nameP).intern();
159+
final String name = new String(e.name, e.nameP, e.nameEnd - e.nameP, StandardCharsets.UTF_8).intern();
160160
int nth = regex.nameToBackrefNumber(e.name, e.nameP, e.nameEnd, region);
161161

162162
final Object value;
@@ -413,7 +413,7 @@ public void forceEncoding(RubyEncoding encoding) {
413413

414414
public RubyEncoding getEncoding() {
415415
if (encoding == null) {
416-
encoding = RubyEncoding.getEncoding(getContext(), regex.getEncoding());
416+
encoding = RubyEncoding.getEncoding(regex.getEncoding());
417417
}
418418

419419
return encoding;

core/src/main/java/org/jruby/truffle/runtime/core/StringFormatter.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,31 @@
1515

1616
import java.io.ByteArrayOutputStream;
1717
import java.io.PrintStream;
18+
import java.io.UnsupportedEncodingException;
19+
import java.nio.charset.StandardCharsets;
1820
import java.util.List;
1921

2022
public class StringFormatter {
2123

2224
@CompilerDirectives.TruffleBoundary
2325
public static String format(RubyContext context, String format, List<Object> values) {
2426
final ByteArrayOutputStream byteArray = new ByteArrayOutputStream();
25-
final PrintStream printStream = new PrintStream(byteArray);
27+
28+
final PrintStream printStream;
29+
30+
try {
31+
printStream = new PrintStream(byteArray, false, StandardCharsets.UTF_8.name());
32+
} catch (UnsupportedEncodingException e) {
33+
throw new RuntimeException(e);
34+
}
2635

2736
format(context, printStream, format, values);
2837

29-
return byteArray.toString();
38+
try {
39+
return byteArray.toString(StandardCharsets.UTF_8.name());
40+
} catch (UnsupportedEncodingException e) {
41+
throw new RuntimeException(e);
42+
}
3043
}
3144

3245
@CompilerDirectives.TruffleBoundary

0 commit comments

Comments
 (0)