diff options
author | James Moger <james.moger@gitblit.com> | 2012-07-11 16:59:04 -0400 |
---|---|---|
committer | James Moger <james.moger@gitblit.com> | 2012-07-11 16:59:04 -0400 |
commit | 2b67ec0e4a42ad1069a477040a549c3e19be9e36 (patch) | |
tree | e22bb04a7d7d24b0f08b51cd329d46a996c93aad /src/com/gitblit | |
parent | 23600183b80713d7c87300316de0b06596d673e3 (diff) | |
download | gitblit-2b67ec0e4a42ad1069a477040a549c3e19be9e36.tar.gz gitblit-2b67ec0e4a42ad1069a477040a549c3e19be9e36.zip |
Fix for line number identification bug in LuceneExecutor (issue 105)
Diffstat (limited to 'src/com/gitblit')
-rw-r--r-- | src/com/gitblit/LuceneExecutor.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/com/gitblit/LuceneExecutor.java b/src/com/gitblit/LuceneExecutor.java index 81265f56..c702dcc7 100644 --- a/src/com/gitblit/LuceneExecutor.java +++ b/src/com/gitblit/LuceneExecutor.java @@ -1205,7 +1205,13 @@ public class LuceneExecutor implements Runnable { return "<pre class=\"text\">" + StringUtils.escapeForHtml(fragment, true) + "</pre>";
}
- int contentPos = 0;
+ // make sure we have unique fragments
+ Set<String> uniqueFragments = new LinkedHashSet<String>();
+ for (String fragment : fragments) {
+ uniqueFragments.add(fragment);
+ }
+ fragments = uniqueFragments.toArray(new String[uniqueFragments.size()]);
+
StringBuilder sb = new StringBuilder();
for (int i = 0, len = fragments.length; i < len; i++) {
String fragment = fragments[i];
@@ -1215,7 +1221,7 @@ public class LuceneExecutor implements Runnable { String raw = fragment.replace(termTag, "").replace(termTagEnd, "");
// determine position of the raw fragment in the content
- int pos = content.indexOf(raw, contentPos);
+ int pos = content.indexOf(raw);
// restore complete first line of fragment
int c = pos;
@@ -1243,8 +1249,6 @@ public class LuceneExecutor implements Runnable { }
tag = MessageFormat.format("<pre class=\"prettyprint linenums:{0,number,0}{1}\">", line, lang);
- // update offset into content
- contentPos = pos + raw.length() + 1;
}
sb.append(tag);
|