linguistic/source/gciterator.cxx | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
New commits: commit aa9bef8271ed50a397c959ed53c91ee44b3dcb10 Author: Michael Stahl <mst...@redhat.com> Date: Mon Sep 2 15:58:00 2013 +0200 fdo#68750: ensure that GetSuggestedEndOfSentence makes progress Checking a string of 17399 spaces takes 20 seconds here in GrammarCheckingIterator::GetSuggestedEndOfSentence() because BreakIterator_Unicode::endOfSentence() will always return 0 as a result regardless of what nStartPos it gets. Change-Id: Id02440a91d7015c2896e387854445ee5383092fa (cherry picked from commit b23999755a865a277c29adfc1dc0c249275bfd7e) Reviewed-on: https://gerrit.libreoffice.org/5758 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/linguistic/source/gciterator.cxx b/linguistic/source/gciterator.cxx index 4c08a9e..f12b6f2 100644 --- a/linguistic/source/gciterator.cxx +++ b/linguistic/source/gciterator.cxx @@ -754,13 +754,23 @@ sal_Int32 GrammarCheckingIterator::GetSuggestedEndOfSentence( m_xBreakIterator = i18n::BreakIterator::create(xContext); } sal_Int32 nTextLen = rText.getLength(); - sal_Int32 nEndPosition; + sal_Int32 nEndPosition(0); sal_Int32 nTmpStartPos = nSentenceStartPos; do { + sal_Int32 const nPrevEndPosition(nEndPosition); nEndPosition = nTextLen; if (nTmpStartPos < nTextLen) + { nEndPosition = m_xBreakIterator->endOfSentence( rText, nTmpStartPos, rLocale ); + if (nEndPosition <= nPrevEndPosition) + { + // fdo#68750 if there's no progress at all then presumably + // there's no end of sentence in this paragraph so just + // set the end position to end of paragraph + nEndPosition = nTextLen; + } + } if (nEndPosition < 0) nEndPosition = nTextLen;
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits