Skip to content

Commit fef9120

Browse files
committed
Fix thread safety problem in Predict (flag_predict_probability) #38
1 parent 330e8a7 commit fef9120

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

src/main/java/de/bwaldvogel/liblinear/Predict.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,12 @@
2121

2222
public class Predict {
2323

24-
private static boolean flag_predict_probability = false;
25-
2624
private static final Pattern COLON = Pattern.compile(":");
2725

2826
/**
2927
* <p><b>Note: The streams are NOT closed</b></p>
3028
*/
31-
static void doPredict(BufferedReader reader, Writer writer, Model model) throws IOException {
29+
static void doPredict(BufferedReader reader, Writer writer, Model model, boolean flag_predict_probability) throws IOException {
3230
int correct = 0;
3331
int total = 0;
3432
double error = 0;
@@ -146,6 +144,8 @@ private static void exit_with_help() {
146144
}
147145

148146
public static void main(String[] argv) throws IOException {
147+
// Note: This flag is _static_ in predict.c but it causes a thread-safety issue as reported in https://github.com/bwaldvogel/liblinear-java/issues/38
148+
boolean flag_predict_probability = false;
149149
int i;
150150

151151
// parse options
@@ -182,7 +182,7 @@ public static void main(String[] argv) throws IOException {
182182
FileOutputStream out = new FileOutputStream(argv[i + 2]);
183183
Writer writer = new BufferedWriter(new OutputStreamWriter(out, Linear.FILE_CHARSET))) {
184184
Model model = Linear.loadModel(Paths.get(argv[i + 1]));
185-
doPredict(reader, writer, model);
185+
doPredict(reader, writer, model, flag_predict_probability);
186186
}
187187
}
188188
}

src/test/java/de/bwaldvogel/liblinear/PredictTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public void tearDown() {
4242
private void testWithLines(StringBuilder sb) throws Exception {
4343
try (StringReader stringReader = new StringReader(sb.toString());
4444
BufferedReader reader = new BufferedReader(stringReader)) {
45-
Predict.doPredict(reader, writer, testModel);
45+
Predict.doPredict(reader, writer, testModel, false);
4646
}
4747
}
4848

0 commit comments

Comments
 (0)