From 2b67ec0e4a42ad1069a477040a549c3e19be9e36 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Wed, 11 Jul 2012 16:59:04 -0400
Subject: [PATCH] Fix for line number identification bug in LuceneExecutor (issue 105)
---
docs/04_releases.mkd | 1 +
src/com/gitblit/LuceneExecutor.java | 12 ++++++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/docs/04_releases.mkd b/docs/04_releases.mkd
index 3c22dbe..40f3194 100644
--- a/docs/04_releases.mkd
+++ b/docs/04_releases.mkd
@@ -6,6 +6,7 @@
#### fixes
+- Fixed intermittent bug in identifying line numbers in Lucene search (issue 105)
- Adjust repository search to handle foo.git and foo/bar.git (issue 104)
- Fixed bug where a repository set as authenticated push did not have anonymous clone access (issue 96)
- Fixed bug in Basic authentication if passwords had a colon (Github/peterloron)
diff --git a/src/com/gitblit/LuceneExecutor.java b/src/com/gitblit/LuceneExecutor.java
index 81265f5..c702dcc 100644
--- a/src/com/gitblit/LuceneExecutor.java
+++ b/src/com/gitblit/LuceneExecutor.java
@@ -1205,7 +1205,13 @@
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 @@
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 @@
}
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);
--
Gitblit v1.9.1