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