diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2007-06-06 11:17:12 +0000 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2007-06-06 11:17:12 +0000 |
commit | b6308a6e322fd4eaa7845793beb70900624f351c (patch) | |
tree | 86020540f6205de547ee3db6a3a80a6e328dad6c /i18npool | |
parent | b9da577314d69c64d5023a2004ae125ad0a8f546 (diff) |
INTEGRATION: CWS i18n30 (1.14.32); FILE MERGED
2007/05/08 21:44:15 khong 1.14.32.1: #i76706# fix infinite loop for CJK word breakiterator for text mixed with Latin and CJK characters
Diffstat (limited to 'i18npool')
-rw-r--r-- | i18npool/source/breakiterator/breakiterator_cjk.cxx | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/i18npool/source/breakiterator/breakiterator_cjk.cxx b/i18npool/source/breakiterator/breakiterator_cjk.cxx index 0785ec559bed..c6e7dd5a27d3 100644 --- a/i18npool/source/breakiterator/breakiterator_cjk.cxx +++ b/i18npool/source/breakiterator/breakiterator_cjk.cxx @@ -4,9 +4,9 @@ * * $RCSfile: breakiterator_cjk.cxx,v $ * - * $Revision: 1.14 $ + * $Revision: 1.15 $ * - * last change: $Author: hr $ $Date: 2006-10-24 13:53:13 $ + * last change: $Author: ihi $ $Date: 2007-06-06 12:17:12 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -65,8 +65,9 @@ BreakIterator_CJK::previousWord(const OUString& text, sal_Int32 anyPos, if (result.endPos - result.startPos != 1 || getScriptType(text, result.startPos) == ScriptType::ASIAN) return result; - else - return BreakIterator_Unicode::getWordBoundary(text, result.startPos, nLocale, wordType, true); + result = BreakIterator_Unicode::getWordBoundary(text, result.startPos, nLocale, wordType, true); + if (result.endPos < anyPos) + return result; } return BreakIterator_Unicode::previousWord(text, anyPos, nLocale, wordType); } @@ -81,8 +82,9 @@ BreakIterator_CJK::nextWord(const OUString& text, sal_Int32 anyPos, if (result.endPos - result.startPos != 1 || getScriptType(text, result.startPos) == ScriptType::ASIAN) return result; - else - return BreakIterator_Unicode::getWordBoundary(text, result.startPos, nLocale, wordType, true); + result = BreakIterator_Unicode::getWordBoundary(text, result.startPos, nLocale, wordType, true); + if (result.startPos > anyPos) + return result; } return BreakIterator_Unicode::nextWord(text, anyPos, nLocale, wordType); } |