Skip to content

Commit 37b3bb5

Browse files
committed
fix timeout calculation and minor code clean-up
1 parent c03ac60 commit 37b3bb5

File tree

1 file changed

+15
-12
lines changed

1 file changed

+15
-12
lines changed

java/src/name/fraser/neil/plaintext/diff_match_patch.java

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,18 @@
1919
package name.fraser.neil.plaintext;
2020

2121
import java.io.UnsupportedEncodingException;
22-
import java.lang.Character;
23-
import java.net.URLDecoder;
2422
import java.net.URLEncoder;
25-
import java.util.*;
23+
import java.nio.charset.StandardCharsets;
24+
import java.util.ArrayDeque;
25+
import java.util.ArrayList;
26+
import java.util.Arrays;
27+
import java.util.Deque;
28+
import java.util.HashMap;
29+
import java.util.HashSet;
30+
import java.util.LinkedList;
31+
import java.util.List;
32+
import java.util.ListIterator;
33+
import java.util.Map;
2634
import java.util.regex.Matcher;
2735
import java.util.regex.Pattern;
2836

@@ -138,7 +146,7 @@ public LinkedList<Diff> diff_main(String text1, String text2,
138146
if (Diff_Timeout <= 0) {
139147
deadline = Long.MAX_VALUE;
140148
} else {
141-
deadline = System.currentTimeMillis() + (long) (Diff_Timeout * 1000);
149+
deadline = System.nanoTime() + (long) (Diff_Timeout * 1000000000l);
142150
}
143151
return diff_main(text1, text2, checklines, deadline);
144152
}
@@ -382,7 +390,7 @@ protected LinkedList<Diff> diff_bisect(String text1, String text2,
382390
int k2end = 0;
383391
for (int d = 0; d < max_d; d++) {
384392
// Bail out if deadline is reached.
385-
if (System.currentTimeMillis() > deadline) {
393+
if (System.nanoTime() > deadline) {
386394
break;
387395
}
388396

@@ -1474,13 +1482,8 @@ public String diff_toDelta(List<Diff> diffs) {
14741482
for (Diff aDiff : diffs) {
14751483
switch (aDiff.operation) {
14761484
case INSERT:
1477-
try {
1478-
text.append("+").append(URLEncoder.encode(aDiff.text, "UTF-8")
1479-
.replace('+', ' ')).append("\t");
1480-
} catch (UnsupportedEncodingException e) {
1481-
// Not likely on modern system.
1482-
throw new Error("This system does not support UTF-8.", e);
1483-
}
1485+
text.append("+").append(URLEncoder.encode(aDiff.text, StandardCharsets.UTF_8)
1486+
.replace('+', ' ')).append("\t");
14841487
break;
14851488
case DELETE:
14861489
text.append("-").append(aDiff.text.length()).append("\t");

0 commit comments

Comments
 (0)