From ad9bc429171c8196a9cd68d36794e3de9b6d7270 Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Wed, 2 May 2018 21:51:26 +0200 Subject: fixed search term parser for empty terms --- .../java/de/pixart/messenger/utils/FtsUtils.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main/java/de/pixart/messenger/utils/FtsUtils.java b/src/main/java/de/pixart/messenger/utils/FtsUtils.java index 86eeeeeaf..c6870d07e 100644 --- a/src/main/java/de/pixart/messenger/utils/FtsUtils.java +++ b/src/main/java/de/pixart/messenger/utils/FtsUtils.java @@ -44,10 +44,10 @@ public class FtsUtils { if (part.isEmpty()) { continue; } - final String cleaned = part.substring(getStartIndex(part), getEndIndex(part) + 1); + final String cleaned = clean(part); if (isKeyword(cleaned)) { term.add(part); - } else { + } else if (!cleaned.isEmpty()) { term.add(cleaned); } } @@ -76,9 +76,13 @@ public class FtsUtils { } private static int getStartIndex(String term) { + int length = term.length(); int index = 0; while (term.charAt(index) == '*') { ++index; + if (index >= length) { + break; + } } return index; } @@ -87,8 +91,20 @@ public class FtsUtils { int index = term.length() - 1; while (term.charAt(index) == '*') { --index; + if (index < 0) { + break; + } } return index; } + private static String clean(String input) { + int begin = getStartIndex(input); + int end = getEndIndex(input); + if (begin > end) { + return ""; + } else { + return input.substring(begin, end + 1); + } + } } \ No newline at end of file -- cgit v1.2.3