]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/util/PublicSuffixes.java
fix: cleanup public suffix list-initailizing.
[gigi.git] / src / org / cacert / gigi / util / PublicSuffixes.java
index 9fd2217b2ecd89f4b67891762eab1c0b34a6fb95..51c2edf2acb53a90a22a0021729dd08c73a63d9f 100644 (file)
@@ -18,16 +18,16 @@ public class PublicSuffixes {
 
     private static PublicSuffixes instance;
 
-    private static void generateDefault() throws IOException {
+    private static PublicSuffixes generateDefault() throws IOException {
         try (BufferedReader br = new BufferedReader(new InputStreamReader(PublicSuffixes.class.getResourceAsStream("effective_tld_names.dat"), "UTF-8"))) {
-            instance = new PublicSuffixes(br);
+            return new PublicSuffixes(br);
         }
     }
 
-    public static PublicSuffixes getInstance() {
+    public synchronized static PublicSuffixes getInstance() {
         if (instance == null) {
             try {
-                generateDefault();
+                instance = generateDefault();
             } catch (IOException e) {
                 throw new Error(e);
             }
@@ -44,7 +44,11 @@ public class PublicSuffixes {
             if (line.isEmpty()) {
                 continue;
             }
-            line = line.split("\\s", 2)[0];
+            String[] lineParts = line.split("\\s", 2);
+            if (lineParts.length == 0) {
+                throw new Error("split had strange behavior");
+            }
+            line = lineParts[0];
             if (line.startsWith("*.")) {
                 String data = line.substring(2);
                 if (data.contains("*") || data.contains("!")) {