From 36dac398c2f9e0d2c7dabb468958359fbe50cdd4 Mon Sep 17 00:00:00 2001 From: carl-textalk <51961396+carl-textalk@users.noreply.github.com> Date: Tue, 25 Feb 2020 14:02:28 +0100 Subject: [PATCH] Fix bug with string index out of bounds (#3) --- src/org/daisy/dotify/common/text/BreakPointHandler.java | 2 +- .../daisy/dotify/common/text/BreakPointHandlerTest.java | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/org/daisy/dotify/common/text/BreakPointHandler.java b/src/org/daisy/dotify/common/text/BreakPointHandler.java index 5f85f30..7e55ad0 100644 --- a/src/org/daisy/dotify/common/text/BreakPointHandler.java +++ b/src/org/daisy/dotify/common/text/BreakPointHandler.java @@ -239,7 +239,7 @@ private BreakPoint newBreakpointFromPosition(int strPos, int breakPoint, boolean } else if (state.charsStr.charAt(i)==ZERO_WIDTH_SPACE) { // ignore zero width space head = state.charsStr.substring(0, i); tailStart = i+1; - } else if (state.charsStr.charAt(i)==DASH && state.charsStr.length()>1 && state.charsStr.charAt(i-1)==SPACE) { + } else if (state.charsStr.charAt(i)==DASH && state.charsStr.length()>1 && i!=0 && state.charsStr.charAt(i-1)==SPACE) { // if hyphen is preceded by space, back up one more head = state.charsStr.substring(0, i); tailStart = i; diff --git a/test/org/daisy/dotify/common/text/BreakPointHandlerTest.java b/test/org/daisy/dotify/common/text/BreakPointHandlerTest.java index 37543b3..ebd7e87 100644 --- a/test/org/daisy/dotify/common/text/BreakPointHandlerTest.java +++ b/test/org/daisy/dotify/common/text/BreakPointHandlerTest.java @@ -330,4 +330,11 @@ public void testMarkReset() { assertEquals("", bp.getTail()); } + @Test + public void testNextRowDoesNotCrashWhenBreakpointIsTheFirstCharacterAndRowStartsWithHyphen(){ + BreakPointHandler bph = new BreakPointHandler( "-abcdef"); + BreakPoint bp = bph.nextRow(3, false); + assertEquals("-", bp.getHead()); + assertEquals("abcdef", bp.getTail()); + } } \ No newline at end of file