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) --- 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 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