summaryrefslogtreecommitdiff
path: root/i18npool
diff options
context:
space:
mode:
authorIvo Hinkelmann <ihi@openoffice.org>2007-06-06 11:17:12 +0000
committerIvo Hinkelmann <ihi@openoffice.org>2007-06-06 11:17:12 +0000
commitb6308a6e322fd4eaa7845793beb70900624f351c (patch)
tree86020540f6205de547ee3db6a3a80a6e328dad6c /i18npool
parentb9da577314d69c64d5023a2004ae125ad0a8f546 (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.cxx14
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);
}