diff --git a/dexlib2/src/main/java/org/jf/util/TrieTree.java b/dexlib2/src/main/java/org/jf/util/TrieTree.java index a097c44..07e1e51 100644 --- a/dexlib2/src/main/java/org/jf/util/TrieTree.java +++ b/dexlib2/src/main/java/org/jf/util/TrieTree.java @@ -41,15 +41,23 @@ public TrieNode nextNode(char content) { } public void add(String word) { + if (word == null) + return; + TrieNode current = root; StringBuilder wordBuilder = new StringBuilder(); + + char content; + TrieNode node; for (int index = 0; index < word.length(); ++index) { - char content = word.charAt(index); + content = word.charAt(index); wordBuilder.append(content); - TrieNode node = new TrieNode(content, wordBuilder.toString()); + node = new TrieNode(content, wordBuilder.toString()); if (current.children.contains(node)) { current = current.nextNode(content); } else { + if (index == word.length() - 1) + node.isEnd = true; current.children.add(node); current = node; } @@ -66,9 +74,14 @@ public void addAll(List words) { } public boolean search(String word) { + if (word == null) + return false; + TrieNode current = root; + + char content; for (int index = 0; index < word.length(); ++index) { - char content = word.charAt(index); + content = word.charAt(index); if (current.isEnd) break; @@ -79,6 +92,6 @@ public boolean search(String word) { else return false; } - return true; + return current.isEnd; } }