diff options
Diffstat (limited to 'core/src/main/java')
| -rw-r--r-- | core/src/main/java/com/google/zxing/client/result/URIResultParser.java | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/core/src/main/java/com/google/zxing/client/result/URIResultParser.java b/core/src/main/java/com/google/zxing/client/result/URIResultParser.java index 21adc34f5..2c5dc272c 100644 --- a/core/src/main/java/com/google/zxing/client/result/URIResultParser.java +++ b/core/src/main/java/com/google/zxing/client/result/URIResultParser.java @@ -18,7 +18,6 @@ package com.google.zxing.client.result; import com.google.zxing.Result; -import java.util.regex.Matcher; import java.util.regex.Pattern; /** @@ -70,12 +69,12 @@ public final class URIResultParser extends ResultParser { // Quick hack check for a common case return false; } - Matcher m = URL_WITH_PROTOCOL_PATTERN.matcher(uri); - if (m.find() && m.start() == 0) { // match at start only + // Anchor at the start. find() rescans from every position, which is quadratic on long + // input that has no match at the start; lookingAt() matches only a prefix. + if (URL_WITH_PROTOCOL_PATTERN.matcher(uri).lookingAt()) { return true; } - m = URL_WITHOUT_PROTOCOL_PATTERN.matcher(uri); - return m.find() && m.start() == 0; + return URL_WITHOUT_PROTOCOL_PATTERN.matcher(uri).lookingAt(); } }
\ No newline at end of file |
