From c2fd8408468368b85071c5bb6d22c79733aee3c2 Mon Sep 17 00:00:00 2001 From: mindless Date: Fri, 16 Apr 2010 00:23:00 +0000 Subject: [PATCH] [FIXED HUDSON-6252] fix bad index calculation in SubText.subText which caused StringIndexOutOfBoundsException in UrlAnnotator. Added test. git-svn-id: https://hudson.dev.java.net/svn/hudson/trunk/hudson/main@30102 71c3de6d-444a-0410-be80-ed276b4c234a --- core/src/main/java/hudson/MarkupText.java | 2 +- core/src/test/java/hudson/MarkupTextTest.java | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/hudson/MarkupText.java b/core/src/main/java/hudson/MarkupText.java index 138dc6202d..1e46a384ca 100644 --- a/core/src/main/java/hudson/MarkupText.java +++ b/core/src/main/java/hudson/MarkupText.java @@ -98,7 +98,7 @@ public class MarkupText extends AbstractMarkupText { @Override public SubText subText(int start, int end) { return MarkupText.this.subText(this.start+start, - end<0 ? this.end+1+end : this.end+end); + end<0 ? this.end+1+end : this.start+end); } @Override diff --git a/core/src/test/java/hudson/MarkupTextTest.java b/core/src/test/java/hudson/MarkupTextTest.java index 1b5455cf94..06a63e837e 100644 --- a/core/src/test/java/hudson/MarkupTextTest.java +++ b/core/src/test/java/hudson/MarkupTextTest.java @@ -28,8 +28,6 @@ import hudson.MarkupText.SubText; import java.util.List; import java.util.regex.Pattern; -import java.net.URL; -import java.net.MalformedURLException; /** * @author Kohsuke Kawaguchi @@ -101,5 +99,20 @@ public class MarkupTextTest extends TestCase { assertEquals("Line
\n2 & 3\n<End>\n", text.toString(true)); } + /* @Bug(6252) */ + public void testSubTextSubText() { + MarkupText text = new MarkupText("abcdefgh"); + SubText sub = text.subText(2, 7); + assertEquals("cdefg", sub.getText()); + sub = sub.subText(1, 4); + assertEquals("def", sub.getText()); + + // test negative end + sub = text.subText(2, -3); + assertEquals("cdef", sub.getText()); + sub = sub.subText(1, -2); + assertEquals("de", sub.getText()); + } + private static final Pattern pattern = Pattern.compile("issue #([0-9]+)"); }