[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/breakiterator/breakiterator_th.cxx |1 + 1 file changed, 1 insertion(+) New commits: commit acddaea669fcb30660f1844e84582ce11e31 Author: Miklos Vajna vmik...@collabora.co.uk Date: Sat May 23 10:20:47 2015 +0100 i18npool: missing include Change-Id: I04b2e2aa5fffd570f33b69d8df99b9a88481a3a2 (cherry picked from commit d8208da8576874fdb07014287e6cbc0aeba741bb) Reviewed-on: https://gerrit.libreoffice.org/17046 Reviewed-by: Eike Rathke er...@redhat.com Tested-by: Eike Rathke er...@redhat.com diff --git a/i18npool/source/breakiterator/breakiterator_th.cxx b/i18npool/source/breakiterator/breakiterator_th.cxx index 5b4973b..db1dcde4 100644 --- a/i18npool/source/breakiterator/breakiterator_th.cxx +++ b/i18npool/source/breakiterator/breakiterator_th.cxx @@ -21,6 +21,7 @@ #include wtt.h #include string.h +#include algorithm using namespace ::com::sun::star::uno; using namespace ::com::sun::star::lang; ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/breakiterator/breakiterator_th.cxx | 10 ++ 1 file changed, 6 insertions(+), 4 deletions(-) New commits: commit 668e6353f4597b81ebfd153b6197831dac50d398 Author: Michael Stahl mst...@redhat.com Date: Fri May 22 20:53:05 2015 +0200 tdf#90809: i18npool: fix crash in Thai break iterator endPos = nStartPos + 1 may be past the end index invalid write of size 4 at 0x1CBBA959: com::sun::star::i18n::BreakIterator_th::makeIndex(rtl::OUString const, int) (breakiterator_th.cxx:139) by 0x1CBB4AA2: com::sun::star::i18n::BreakIterator_CTL::previousCharacters(rtl::OUString const, int, com::sun::star::lang::Locale const, short, int, int) (breakiterator_ctl.cxx:61) by 0x1CBB544F: com::sun::star::i18n::BreakIteratorImpl::previousCharacters(rtl::OUString const, int, com::sun::star::lang::Locale const, short, int, int) (breakiteratorImpl.cxx:64) by 0xA29D29A: ServerFontLayout::setNeedFallback(ImplLayoutArgs, int, bool) (gcach_layout.cxx:99) Change-Id: I201f24cb6773b5aa1a81dea90ea906d3d4355053 (cherry picked from commit 9db629b8a1fa9b63bc320f8d47594ec82511a9c5) Reviewed-on: https://gerrit.libreoffice.org/15869 Reviewed-by: Caolán McNamara caol...@redhat.com Tested-by: Caolán McNamara caol...@redhat.com diff --git a/i18npool/source/breakiterator/breakiterator_th.cxx b/i18npool/source/breakiterator/breakiterator_th.cxx index e350fdc..5b4973b 100644 --- a/i18npool/source/breakiterator/breakiterator_th.cxx +++ b/i18npool/source/breakiterator/breakiterator_th.cxx @@ -103,7 +103,7 @@ static sal_Int32 SAL_CALL getACell(const sal_Unicode *text, sal_Int32 pos, sal_I #define is_Thai(c) (0x0e00 = c c = 0x0e7f) // Unicode definition for Thai -void SAL_CALL BreakIterator_th::makeIndex(const OUString Text, sal_Int32 nStartPos) +void SAL_CALL BreakIterator_th::makeIndex(const OUString Text, sal_Int32 const nStartPos) throw(RuntimeException) { if (Text != cachedText) { @@ -123,18 +123,20 @@ void SAL_CALL BreakIterator_th::makeIndex(const OUString Text, sal_Int32 nStart return; const sal_Unicode* str = cachedText.getStr(); -sal_Int32 len = cachedText.getLength(), startPos, endPos; +sal_Int32 const len = cachedText.getLength(); -startPos = nStartPos; +sal_Int32 startPos = nStartPos; while (startPos 0 is_Thai(str[startPos-1])) startPos--; -endPos = nStartPos+1; +sal_Int32 endPos = std::min(len, nStartPos+1); while (endPos len is_Thai(str[endPos])) endPos++; sal_Int32 start, end, pos; pos = start = end = startPos; +assert(endPos = cellIndexSize); while (pos endPos) { end += getACell(str, start, endPos); +assert(end = cellIndexSize); while (pos end) { nextCellIndex[pos] = end; previousCellIndex[pos] = start; ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/characterclassification/cclass_unicode.cxx | 56 - 1 file changed, 36 insertions(+), 20 deletions(-) New commits: commit 94e990de1fcf3b6bbb5e6524858fe7cc09e95594 Author: Caolán McNamara caol...@redhat.com Date: Thu May 7 10:23:13 2015 +0100 Resolves: tdf#91057 transliterateChar2Char throws MultipleCharsOutputException for Ã, but toTitle only allows RuntimeException, which is our usual awesomeness Change-Id: Ib5618a55a369fa5cd1d323f657f0798776828386 (cherry picked from commit d0a0da717682a0e57f733d75d9d0700cfb198823) Reviewed-on: https://gerrit.libreoffice.org/15659 Reviewed-by: Stephan Bergmann sberg...@redhat.com Tested-by: Stephan Bergmann sberg...@redhat.com diff --git a/i18npool/source/characterclassification/cclass_unicode.cxx b/i18npool/source/characterclassification/cclass_unicode.cxx index e58598e..637d75c 100644 --- a/i18npool/source/characterclassification/cclass_unicode.cxx +++ b/i18npool/source/characterclassification/cclass_unicode.cxx @@ -21,8 +21,10 @@ #include com/sun/star/i18n/UnicodeScript.hpp #include com/sun/star/i18n/UnicodeType.hpp #include com/sun/star/i18n/KCharacterType.hpp +#include com/sun/star/lang/WrappedTargetRuntimeException.hpp #include unicode/uchar.h #include comphelper/string.hxx +#include cppuhelper/exc_hlp.hxx #include cppuhelper/supportsservice.hxx #include breakiteratorImpl.hxx @@ -79,27 +81,41 @@ cclass_Unicode::toLower( const OUString Text, sal_Int32 nPos, sal_Int32 nCount, OUString SAL_CALL cclass_Unicode::toTitle( const OUString Text, sal_Int32 nPos, sal_Int32 nCount, const Locale rLocale ) throw(RuntimeException, std::exception) { -sal_Int32 len = Text.getLength(); -if (nPos = len) -return OUString(); -if (nCount + nPos len) -nCount = len - nPos; - -trans-setMappingType(MappingTypeToTitle, rLocale); -rtl_uString* pStr = rtl_uString_alloc(nCount); -sal_Unicode* out = pStr-buffer; -BreakIteratorImpl brk(m_xContext); -Boundary bdy = brk.getWordBoundary(Text, nPos, rLocale, -WordType::ANYWORD_IGNOREWHITESPACES, sal_True); -for (sal_Int32 i = nPos; i nCount + nPos; i++, out++) { -if (i = bdy.endPos) -bdy = brk.nextWord(Text, bdy.endPos, rLocale, -WordType::ANYWORD_IGNOREWHITESPACES); -*out = (i == bdy.startPos) ? -trans-transliterateChar2Char(Text[i]) : Text[i]; +try +{ +sal_Int32 len = Text.getLength(); +if (nPos = len) +return OUString(); +if (nCount + nPos len) +nCount = len - nPos; + +trans-setMappingType(MappingTypeToTitle, rLocale); +rtl_uString* pStr = rtl_uString_alloc(nCount); +sal_Unicode* out = pStr-buffer; +BreakIteratorImpl brk(m_xContext); +Boundary bdy = brk.getWordBoundary(Text, nPos, rLocale, +WordType::ANYWORD_IGNOREWHITESPACES, sal_True); +for (sal_Int32 i = nPos; i nCount + nPos; i++, out++) { +if (i = bdy.endPos) +bdy = brk.nextWord(Text, bdy.endPos, rLocale, +WordType::ANYWORD_IGNOREWHITESPACES); +*out = (i == bdy.startPos) ? +trans-transliterateChar2Char(Text[i]) : Text[i]; +} +*out = 0; +return OUString( pStr, SAL_NO_ACQUIRE ); +} +catch (const RuntimeException) +{ +throw; +} +catch (const Exception e) +{ +uno::Any a(cppu::getCaughtException()); +throw lang::WrappedTargetRuntimeException( +wrapped Exception + e.Message, +uno::Referenceuno::XInterface(), a); } -*out = 0; -return OUString( pStr, SAL_NO_ACQUIRE ); } sal_Int16 SAL_CALL ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/localedata/data/es_CR.xml | 42 ++ 1 file changed, 32 insertions(+), 10 deletions(-) New commits: commit 021943dad044076c10b9b032d4e0b243e64f631c Author: Julien Nabet serval2...@yahoo.fr Date: Sat May 2 10:30:19 2015 +0200 tdf#91009: Correct thousands separator character for locale es_CR Thanks to Severo Raz for having indicated this link: http://es.wikipedia.org/wiki/Wikipedia_discusi%C3%B3n:Manual_de_estilo/N%C3%BAmeros#Costa_Rica (cherry picked from commit 78ef368b8ca6fb53b67330c305f8c2c581cbf68e) Related tdf#91009: Correct thousands separator character for locale es_CR Reviewed-on: https://gerrit.libreoffice.org/15630 Tested-by: Eike Rathke er...@redhat.com Reviewed-by: Eike Rathke er...@redhat.com (cherry picked from commit aa06ce15fdd68983001ef33d1931fbaf6b515282) cf080bb9f21ef75487d43d8a582625be512968c4 Change-Id: Ib8eef774921922dda0db653d8d8365b5e055e646 Reviewed-on: https://gerrit.libreoffice.org/15593 Reviewed-by: Eike Rathke er...@redhat.com Tested-by: Eike Rathke er...@redhat.com diff --git a/i18npool/source/localedata/data/es_CR.xml b/i18npool/source/localedata/data/es_CR.xml index ff0d73a..c048257 100644 --- a/i18npool/source/localedata/data/es_CR.xml +++ b/i18npool/source/localedata/data/es_CR.xml @@ -28,7 +28,29 @@ DefaultNameCosta Rica/DefaultName /Country /LC_INFO - LC_CTYPE ref=es_ES/ + LC_CTYPE +Separators + DateSeparator//DateSeparator + ThousandSeparator /ThousandSeparator + DecimalSeparator,/DecimalSeparator + TimeSeparator:/TimeSeparator + Time100SecSeparator,/Time100SecSeparator + ListSeparator;/ListSeparator + LongDateDayOfWeekSeparator, /LongDateDayOfWeekSeparator + LongDateDaySeparator de /LongDateDaySeparator + LongDateMonthSeparator de /LongDateMonthSeparator + LongDateYearSeparator /LongDateYearSeparator +/Separators +Markers + QuotationStartâ/QuotationStart + QuotationEndâ/QuotationEnd + DoubleQuotationStartâ/DoubleQuotationStart + DoubleQuotationEndâ/DoubleQuotationEnd +/Markers +TimeAMAM/TimeAM +TimePMPM/TimePM +MeasurementSystemmetric/MeasurementSystem + /LC_CTYPE LC_FORMAT DateAcceptancePatternD/M/DateAcceptancePattern FormatElement msgid=DateFormatskey1 default=true type=short usage=DATE formatindex=18 @@ -134,31 +156,31 @@ FormatCode0,00/FormatCode /FormatElement FormatElement msgid=FixedFormatskey4 default=false type=short usage=FIXED_NUMBER formatindex=3 - FormatCode#.##0/FormatCode + FormatCode# ##0/FormatCode /FormatElement FormatElement msgid=FixedFormatskey5 default=false type=medium usage=FIXED_NUMBER formatindex=4 - FormatCode#.##0,00/FormatCode + FormatCode# ##0,00/FormatCode /FormatElement FormatElement msgid=FixedFormatskey6 default=false type=medium usage=FIXED_NUMBER formatindex=5 - FormatCode#.###,00/FormatCode + FormatCode# ###,00/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey1 default=true type=short usage=CURRENCY formatindex=12 - FormatCode[$â¡-140A] #.##0;-[$â¡-140A] #.##0/FormatCode + FormatCode[$â¡-140A] # ##0;-[$â¡-140A] # ##0/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey2 default=false type=medium usage=CURRENCY formatindex=13 - FormatCode[$â¡-140A] #.##0,00;-[$â¡-140A] #.##0,00/FormatCode + FormatCode[$â¡-140A] # ##0,00;-[$â¡-140A] # ##0,00/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey3 default=false type=medium usage=CURRENCY formatindex=14 - FormatCode[$â¡-140A] #.##0;[RED]-[$â¡-140A] #.##0/FormatCode + FormatCode[$â¡-140A] # ##0;[RED]-[$â¡-140A] # ##0/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey4 default=true type=medium usage=CURRENCY formatindex=15 - FormatCode[$â¡-140A] #.##0,00;[RED]-[$â¡-140A] #.##0,00/FormatCode + FormatCode[$â¡-140A] # ##0,00;[RED]-[$â¡-140A] # ##0,00/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey5 default=false type=medium usage=CURRENCY formatindex=16 - FormatCode#.##0,00 CCC/FormatCode + FormatCode# ##0,00 CCC/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey6 default=false type=medium usage=CURRENCY formatindex=17 - FormatCode[$â¡-140A] #.##0,--;[RED]-[$â¡-140A] #.##0,--/FormatCode + FormatCode[$â¡-140A] # ##0,--;[RED]-[$â¡-140A] # ##0,--/FormatCode /FormatElement FormatElement msgid=PercentFormatskey1 default=true type=short usage=PERCENT_NUMBER formatindex=8 FormatCode0%/FormatCode ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/search/textsearch.cxx | 25 + 1 file changed, 21 insertions(+), 4 deletions(-) New commits: commit afae8d1e9eb37265bd356773caa77d6d8ac481bc Author: Michael Stahl mst...@redhat.com Date: Tue Mar 10 23:19:18 2015 +0100 i18npool: fix spurious regex ^ matching in TextSearch::searchForward() Thanks to Eike for finding this: The anchors ^ and $ now anchor at the selection boundary because the only text the regex matcher gets passed is the selected text. This in two paragraphs aaa bbb aaa bbb aaa bbb aaa bbb when the selection spans from the second aaa to the third bbb, for ^aaa finds the second aaa, where previously it found the third aaa at the real paragraph start. This may not be expected by the user, because the behavior of ^ is described as Match at the beginning of a line (or paragraph in our case), which the previous implementation did. (regression from 806ced87cfe3da72df0d8e4faf5b82535fc7d1b7) Unfortunately it's not obvious how to implement the same in searchBackward(). Change-Id: I07f7a8476b672d9511fa74ca473c32eea427698f (cherry picked from commit 9aae521b451269007f03527c83645b8b935eb419) Reviewed-on: https://gerrit.libreoffice.org/14829 Reviewed-by: Caolán McNamara caol...@redhat.com Tested-by: Caolán McNamara caol...@redhat.com diff --git a/i18npool/source/search/textsearch.cxx b/i18npool/source/search/textsearch.cxx index 959227df..094b554 100644 --- a/i18npool/source/search/textsearch.cxx +++ b/i18npool/source/search/textsearch.cxx @@ -242,13 +242,26 @@ SearchResult TextSearch::searchForward( const OUString searchStr, sal_Int32 sta in_str = xTranslit-transliterate( searchStr, startPos, endPos - startPos, offset ); // JP 20.6.2001: also the start and end positions must be corrected! -sal_Int32 const newStartPos = +sal_Int32 newStartPos = (startPos == 0) ? 0 : FindPosInSeq_Impl( offset, startPos ); -sal_Int32 const newEndPos = (endPos searchStr.getLength()) +sal_Int32 newEndPos = (endPos searchStr.getLength()) ? FindPosInSeq_Impl( offset, endPos ) : in_str.getLength(); +sal_Int32 nExtraOffset = 0; +if (pRegexMatcher startPos 0) +{ +// avoid matching ^ here - in_str omits a prefix of the searchStr +// this is a really lame way to do it, but ICU only offers +// useAnchoringBounds() to disable *both* bounds but what is needed +// here is to disable only one bound and respect the other +in_str = X + in_str; +nExtraOffset = 1; +newStartPos += nExtraOffset; +newEndPos += nExtraOffset; +} + sres = (this-*fnForward)( in_str, newStartPos, newEndPos ); // Map offsets back to untransliterated string. @@ -260,14 +273,14 @@ SearchResult TextSearch::searchForward( const OUString searchStr, sal_Int32 sta const sal_Int32 nGroups = sres.startOffset.getLength(); for ( sal_Int32 k = 0; k nGroups; k++ ) { -const sal_Int32 nStart = sres.startOffset[k]; +const sal_Int32 nStart = sres.startOffset[k] - nExtraOffset; if (startPos 0 || nStart 0) sres.startOffset[k] = (nStart nOffsets ? offset[nStart] : (offset[nOffsets - 1] + 1)); // JP 20.6.2001: end is ever exclusive and then don't return // the position of the next character - return the // next position behind the last found character! // a b c find b must return 2,3 and not 2,4!!! -const sal_Int32 nStop = sres.endOffset[k]; +const sal_Int32 nStop = sres.endOffset[k] - nExtraOffset; if (startPos 0 || nStop 0) sres.endOffset[k] = offset[(nStop = nOffsets ? nStop : nOffsets) - 1] + 1; } @@ -345,6 +358,10 @@ SearchResult TextSearch::searchBackward( const OUString searchStr, sal_Int32 st sal_Int32 const newEndPos = (endPos == 0) ? 0 : FindPosInSeq_Impl( offset, endPos ); +// TODO: this would need nExtraOffset handling to avoid $ matching +// if (pRegexMatcher startPos searchStr.getLength()) +// but that appears to be impossible with ICU regex + sres = (this-*fnBackward)( in_str, newStartPos, newEndPos ); // Map offsets back to untransliterated string. ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/search/textsearch.cxx | 21 + 1 file changed, 9 insertions(+), 12 deletions(-) New commits: commit cfaeddd9ed07fad75182eb0cd040e63d08502b5e Author: Michael Stahl mst...@redhat.com Date: Mon Mar 9 23:56:24 2015 +0100 tdf#89665: i18npool: speed up TextSearch::searchBackward() There does not appear to be a good reason why searchBackward() needs to call transliterate() on the entire passed string, so don't do that, as in the previous commit for the other direction. Change-Id: Iadfca806da89bf8825e5a3df7fcad64ea08d7f9c (cherry picked from commit 666fb8b7bc210be6d785515bc7660e5a5d19b82e) Reviewed-on: https://gerrit.libreoffice.org/14827 Reviewed-by: Eike Rathke er...@redhat.com Tested-by: Eike Rathke er...@redhat.com diff --git a/i18npool/source/search/textsearch.cxx b/i18npool/source/search/textsearch.cxx index 7245e9a..959227df 100644 --- a/i18npool/source/search/textsearch.cxx +++ b/i18npool/source/search/textsearch.cxx @@ -328,25 +328,22 @@ SearchResult TextSearch::searchBackward( const OUString searchStr, sal_Int32 st SearchResult sres; OUString in_str(searchStr); -sal_Int32 newStartPos = startPos; -sal_Int32 newEndPos = endPos; bUsePrimarySrchStr = true; if ( xTranslit.is() ) { // apply only simple 1-1 transliteration here -com::sun::star::uno::Sequence sal_Int32 offset( in_str.getLength()); -in_str = xTranslit-transliterate( searchStr, 0, in_str.getLength(), offset ); +com::sun::star::uno::Sequencesal_Int32 offset(startPos - endPos); +in_str = xTranslit-transliterate( searchStr, endPos, startPos - endPos, offset ); // JP 20.6.2001: also the start and end positions must be corrected! -if( startPos searchStr.getLength() ) -newStartPos = FindPosInSeq_Impl( offset, startPos ); -else -newStartPos = in_str.getLength(); +sal_Int32 const newStartPos = (startPos searchStr.getLength()) +? FindPosInSeq_Impl( offset, startPos ) +: in_str.getLength(); -if( endPos ) -newEndPos = FindPosInSeq_Impl( offset, endPos ); +sal_Int32 const newEndPos = +(endPos == 0) ? 0 : FindPosInSeq_Impl( offset, endPos ); sres = (this-*fnBackward)( in_str, newStartPos, newEndPos ); @@ -360,14 +357,14 @@ SearchResult TextSearch::searchBackward( const OUString searchStr, sal_Int32 st for ( sal_Int32 k = 0; k nGroups; k++ ) { const sal_Int32 nStart = sres.startOffset[k]; -if (nStart 0) +if (endPos 0 || nStart 0) sres.startOffset[k] = offset[(nStart = nOffsets ? nStart : nOffsets) - 1] + 1; // JP 20.6.2001: end is ever exclusive and then don't return // the position of the next character - return the // next position behind the last found character! // a b c find b must return 2,3 and not 2,4!!! const sal_Int32 nStop = sres.endOffset[k]; -if (nStop 0) +if (endPos 0 || nStop 0) sres.endOffset[k] = (nStop nOffsets ? offset[nStop] : (offset[nOffsets - 1] + 1)); } } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/search/textsearch.cxx | 21 + 1 file changed, 9 insertions(+), 12 deletions(-) New commits: commit 4bae2ea3b57cb88b34bf8a9eade7ab0a950e0185 Author: Michael Stahl mst...@redhat.com Date: Mon Mar 9 21:32:43 2015 +0100 tdf#89665: i18npool: speed up TextSearch::searchForward() There does not appear to be a good reason why searchForward() needs to call transliterate() on the entire passed string. Restricting it to the passed range speeds it up from 104 billion to 0.19 billion callgrind cycles when built with GCC 4.9.2 -m32 -Os. Change-Id: I440f16c34f38659b64f1eb60c50f0e414e3dfee8 (cherry picked from commit 806ced87cfe3da72df0d8e4faf5b82535fc7d1b7) Reviewed-on: https://gerrit.libreoffice.org/14826 Reviewed-by: Eike Rathke er...@redhat.com Tested-by: Eike Rathke er...@redhat.com diff --git a/i18npool/source/search/textsearch.cxx b/i18npool/source/search/textsearch.cxx index 98aa1b6..7245e9a 100644 --- a/i18npool/source/search/textsearch.cxx +++ b/i18npool/source/search/textsearch.cxx @@ -232,25 +232,22 @@ SearchResult TextSearch::searchForward( const OUString searchStr, sal_Int32 sta SearchResult sres; OUString in_str(searchStr); -sal_Int32 newStartPos = startPos; -sal_Int32 newEndPos = endPos; bUsePrimarySrchStr = true; if ( xTranslit.is() ) { // apply normal transliteration (1-1, 1-0) -com::sun::star::uno::Sequence sal_Int32 offset( in_str.getLength()); -in_str = xTranslit-transliterate( searchStr, 0, in_str.getLength(), offset ); +com::sun::star::uno::Sequencesal_Int32 offset(endPos - startPos); +in_str = xTranslit-transliterate( searchStr, startPos, endPos - startPos, offset ); // JP 20.6.2001: also the start and end positions must be corrected! -if( startPos ) -newStartPos = FindPosInSeq_Impl( offset, startPos ); +sal_Int32 const newStartPos = +(startPos == 0) ? 0 : FindPosInSeq_Impl( offset, startPos ); -if( endPos searchStr.getLength() ) -newEndPos = FindPosInSeq_Impl( offset, endPos ); -else -newEndPos = in_str.getLength(); +sal_Int32 const newEndPos = (endPos searchStr.getLength()) +? FindPosInSeq_Impl( offset, endPos ) +: in_str.getLength(); sres = (this-*fnForward)( in_str, newStartPos, newEndPos ); @@ -264,14 +261,14 @@ SearchResult TextSearch::searchForward( const OUString searchStr, sal_Int32 sta for ( sal_Int32 k = 0; k nGroups; k++ ) { const sal_Int32 nStart = sres.startOffset[k]; -if (nStart 0) +if (startPos 0 || nStart 0) sres.startOffset[k] = (nStart nOffsets ? offset[nStart] : (offset[nOffsets - 1] + 1)); // JP 20.6.2001: end is ever exclusive and then don't return // the position of the next character - return the // next position behind the last found character! // a b c find b must return 2,3 and not 2,4!!! const sal_Int32 nStop = sres.endOffset[k]; -if (nStop 0) +if (startPos 0 || nStop 0) sres.endOffset[k] = offset[(nStop = nOffsets ? nStop : nOffsets) - 1] + 1; } } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/transliteration/transliterationImpl.cxx | 10 +- 1 file changed, 9 insertions(+), 1 deletion(-) New commits: commit d1057d2fc205dc47d845b3e5738a54c68824e90b Author: Michael Stahl mst...@redhat.com Date: Fri Feb 20 20:57:59 2015 +0100 tdf#89665: i18npool: fix pathological transliterate slow-path TransliterationImpl::transliterate() has a slow-path for the case when more than one trasliteration module is cascaded which swaps 2 uno::Sequence. This is unbelievably slow because non-const Sequence::operator[] does a function call into cppu to check whether COW has to be done. This speeds up transliterate() from 344 billion to 101 billion callgrind cycles when built with GCC 4.9.2 -m32 -Os. Commit d2771b63b94a8aae3c25c83e9dae9f83242f46c1 added a second transliteration module that is enabled by default, making the problem visible, especially with long paragraphs in Writer. Change-Id: I2799df9173ac73aab8c4eb4cc6f592976b06c8da (cherry picked from commit 88d4b2fb08b983531b1e0abc71b07f4bdecdc925) Reviewed-on: https://gerrit.libreoffice.org/14643 Reviewed-by: Eike Rathke er...@redhat.com Tested-by: Eike Rathke er...@redhat.com diff --git a/i18npool/source/transliteration/transliterationImpl.cxx b/i18npool/source/transliteration/transliterationImpl.cxx index b9e4445..20d22f0 100644 --- a/i18npool/source/transliteration/transliterationImpl.cxx +++ b/i18npool/source/transliteration/transliterationImpl.cxx @@ -326,9 +326,17 @@ TransliterationImpl::transliterate( const OUString inStr, sal_Int32 startPos, s nCount = tmpStr.getLength(); +assert(off[from].getLength() == nCount); tmp = from; from = to; to = tmp; +// tdf#89665: don't use operator[] to write - too slow! +// interestingly gcc 4.9 -Os won't even inline the const operator[] +sal_Int32 const*const pFrom(off[from].getConstArray()); +sal_Int32 *const pTo(off[to].getArray()); for (sal_Int32 j = 0; j nCount; j++) -off[to][j] = off[from][off[to][j]]; +{ +assert(pTo[j] off[from].getLength()); +pTo[j] = pFrom[pTo[j]]; +} } offset = off[to]; return tmpStr; ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/localedata/data/zh_CN.xml | 23 +++ 1 file changed, 15 insertions(+), 8 deletions(-) New commits: commit 77c27317b7a567d086093f0fbc6039658833d016 Author: Kevin Suo suokunl...@gmail.com Date: Thu Dec 25 15:14:47 2014 +0800 fdo#87626: Improve Simplified Chinese numbering types This commit improves the numbering types for zh_CN locale. Since we can set more than 8 LC_NumberingLevel in the locale data file, I am adding all the commonly used numbering types in the list. This will make it easy to apply numbering. Change-Id: I067904b875046682cd56a7051258ab242c25 Reviewed-on: https://gerrit.libreoffice.org/13647 Reviewed-by: Caolán McNamara caol...@redhat.com Tested-by: Caolán McNamara caol...@redhat.com diff --git a/i18npool/source/localedata/data/zh_CN.xml b/i18npool/source/localedata/data/zh_CN.xml index 6cd5879..e6d3d3c 100644 --- a/i18npool/source/localedata/data/zh_CN.xml +++ b/i18npool/source/localedata/data/zh_CN.xml @@ -421,14 +421,21 @@ /ReservedWords /LC_MISC LC_NumberingLevel -NumberingLevel Prefix= NumType=4 Suffix=. / -NumberingLevel Prefix= NumType=19 Suffix=) / -NumberingLevel Prefix= NumType=15 Suffix=ã / -NumberingLevel Prefix= NumType=16 Suffix=ã / -NumberingLevel Prefix= NumType=0 Suffix=. / -NumberingLevel Prefix=( NumType=15 Suffix=) / -NumberingLevel Prefix= NumType=18 Suffix=ã / -NumberingLevel Prefix= NumType=3 Suffix=. / +NumberingLevel Prefix= NumType=4 Suffix=. / !-- 1. 2. 3. -- +NumberingLevel Prefix= NumType=4 Suffix=ã / !-- 1ã2ã3ã -- +NumberingLevel Prefix=( NumType=4 Suffix=) / !-- (1) (2) (3) -- +NumberingLevel Prefix= NumType=4 Suffix=) / !-- 1) 2) 3) -- +NumberingLevel Prefix= NumType=0 Suffix=. / !-- A. B. C. -- +NumberingLevel Prefix= NumType=0 Suffix=) / !-- A) B) C) -- +NumberingLevel Prefix= NumType=1 Suffix=. / !-- a. b. c. -- +NumberingLevel Prefix= NumType=1 Suffix=. / !-- a) b) c) -- +NumberingLevel Prefix= NumType=2 Suffix=. / !-- I. II. III. -- +NumberingLevel Prefix= NumType=3 Suffix=. / !-- i. ii. iii. -- +NumberingLevel Prefix= NumType=15 Suffix=ã / !-- Chinese #19968;,#20108;,#19977;... -- +NumberingLevel Prefix=ï¼ NumType=15 Suffix=ï¼ / !-- Chinese #19968;,#20108;,#19977;..., with full-width parentheses -- +NumberingLevel Prefix= NumType=18 Suffix=ã / !-- Chinese Tian Gan -- +NumberingLevel Prefix= NumType=19 Suffix=ã / !-- Chinese Di Zhi -- +NumberingLevel Prefix= NumType=16 Suffix=ã / !-- Chinese UPPER CASE -- /LC_NumberingLevel LC_OutLineNumberingLevel OutlineStyle ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/localedata/data/zh_CN.xml |6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) New commits: commit f1dafcec55db9ee6b39c508df7f751d8a325f6a4 Author: Kevin Suo suokunl...@gmail.com Date: Thu Dec 25 16:10:54 2014 +0800 changed default value for long datetime, zh_CN locale data * Added a space to formatindex 46, to make it look nicer; * Long datetime default changed to formatindex 47. Change-Id: I50e05f1a4432ab4373fa0034a390658b59775f0b Reviewed-on: https://gerrit.libreoffice.org/13651 Reviewed-by: Caolán McNamara caol...@redhat.com Tested-by: Caolán McNamara caol...@redhat.com diff --git a/i18npool/source/localedata/data/zh_CN.xml b/i18npool/source/localedata/data/zh_CN.xml index e6d3d3c..d98cbc8 100644 --- a/i18npool/source/localedata/data/zh_CN.xml +++ b/i18npool/source/localedata/data/zh_CN.xml @@ -221,10 +221,10 @@ FormatCode[HH]æ¶MMåSSç§00/FormatCode /FormatElement !-- Date_Time formats. Index range is from 46 to 47. -- -FormatElement msgid=DateTimeFormatskey4 default=true type=long usage=DATE_TIME formatindex=46 - FormatCodeå¹´MMæDæ¥HHæ¶MMåSSç§/FormatCode +FormatElement msgid=DateTimeFormatskey4 default=false type=long usage=DATE_TIME formatindex=46 + FormatCodeå¹´MMæDæ¥ HHæ¶MMåSSç§/FormatCode /FormatElement -FormatElement msgid=DateTimeFormatskey3 default=false type=long usage=DATE_TIME formatindex=47 +FormatElement msgid=DateTimeFormatskey3 default=true type=long usage=DATE_TIME formatindex=47 FormatCode/MM/DD HH:MM:SS/FormatCode /FormatElement FormatElement msgid=DateTimeFormatskey1 default=false type=long usage=DATE_TIME formatindex=58 ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/localedata/data/pt_PT.xml | 24 1 file changed, 24 insertions(+) New commits: commit 9a2cb1f0d59d66063266c05ce71985db140f907c Author: Eike Rathke er...@redhat.com Date: Fri Dec 19 15:08:26 2014 +0100 add more date formats for [pt-PT] Apparently commonly used, as suggested by Sérgio Marques Change-Id: I6cdbcd96034ec7bb04f364ec5747b069e32ec379 (cherry picked from commit 89de0181ffe2f94ea0b27bbd9da76bafa5ad1455) diff --git a/i18npool/source/localedata/data/pt_PT.xml b/i18npool/source/localedata/data/pt_PT.xml index 7503772..770c001 100644 --- a/i18npool/source/localedata/data/pt_PT.xml +++ b/i18npool/source/localedata/data/pt_PT.xml @@ -132,6 +132,30 @@ FormatElement msgid=DateFormatskey26 default=false type=medium usage=DATE formatindex=54 FormatCodeDD-MMM-/FormatCode /FormatElement +FormatElement msgid=DateFormatskey27 default=false type=medium usage=DATE formatindex=56 + FormatCode-/FormatCode +/FormatElement +FormatElement msgid=DateFormatskey28 default=false type=medium usage=DATE formatindex=57 + FormatCodeMMM-/FormatCode +/FormatElement +FormatElement msgid=DateFormatskey29 default=false type=medium usage=DATE formatindex=58 + FormatCode-AA/FormatCode +/FormatElement +FormatElement msgid=DateFormatskey30 default=false type=medium usage=DATE formatindex=59 + FormatCodeMMM-AA/FormatCode +/FormatElement +FormatElement msgid=DateFormatskey31 default=false type=medium usage=DATE formatindex=60 + FormatCodeD--/FormatCode +/FormatElement +FormatElement msgid=DateFormatskey32 default=false type=medium usage=DATE formatindex=61 + FormatCodeD--AA/FormatCode +/FormatElement +FormatElement msgid=DateFormatskey33 default=false type=long usage=DATE formatindex=62 + FormatCode de /FormatCode +/FormatElement +FormatElement msgid=DateFormatskey34 default=false type=long usage=DATE formatindex=63 + FormatCodeMMM de /FormatCode +/FormatElement FormatElement msgid=TimeFormatskey1 default=true type=short usage=TIME formatindex=39 FormatCodeHH:MM/FormatCode /FormatElement ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/localedata/data/mos_BF.xml | 14 +++--- 1 file changed, 7 insertions(+), 7 deletions(-) New commits: commit c9473311b2b680acf6d4693db40ee86c696597f9 Author: Eike Rathke er...@redhat.com Date: Fri Dec 19 17:36:29 2014 +0100 fdo#87466 update locale data for Moore Burkina Faso [mos-BF] Change-Id: I66109a89a7aced1a4595825ee587a1844b6864e8 (cherry picked from commit aa27be0013efc91374f040b72350e490b3ac770f) diff --git a/i18npool/source/localedata/data/mos_BF.xml b/i18npool/source/localedata/data/mos_BF.xml index f6ba0ad..cd92389 100644 --- a/i18npool/source/localedata/data/mos_BF.xml +++ b/i18npool/source/localedata/data/mos_BF.xml @@ -232,12 +232,12 @@ Day DayIDthu/DayID DefaultAbbrvNamelam/DefaultAbbrvName - DefaultFullNamelamussa/DefaultFullName + DefaultFullNamelamusa/DefaultFullName /Day Day DayIDfri/DayID DefaultAbbrvNamearz/DefaultAbbrvName - DefaultFullNamearzuma/DefaultFullName + DefaultFullNamearzÅ©ma/DefaultFullName /Day Day DayIDsat/DayID @@ -344,11 +344,11 @@ trueWordsÉ©da/trueWord falseWordzÄ©ri/falseWord quarter1WordyÊÊmdã pipi kis a tãabo/quarter1Word - quarter2WordyÊÊmda kis a tãab a yiib n soaba/quarter2Word - quarter3WordyÊÊmda kis a tãab a tãab n soaba/quarter3Word - quarter4WordyÊÊmda yaoolem kis a tãab soaba/quarter4Word - aboveWordkaare/aboveWord - belowWordrasÄ©ng kaare/belowWord + quarter2WordyÊÊmdã kis a tãab a yiib n soaba/quarter2Word + quarter3WordyÊÊmdã kis a tãab a tãab n soaba/quarter3Word + quarter4WordyÊÊmdã yaoolem kis a tãab soaba/quarter4Word + aboveWordzugẽ/aboveWord + belowWordtẽngre/belowWord quarter1AbbreviationKis a tãab 1/quarter1Abbreviation quarter2AbbreviationKis a tãab 2/quarter2Abbreviation quarter3AbbreviationKis a tãab 3/quarter3Abbreviation ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/localedata/data/fr_BF.xml | 50 +++--- 1 file changed, 26 insertions(+), 24 deletions(-) New commits: commit bca9ecb7326be88ab59153a1803bba25654b34e5 Author: Eike Rathke er...@redhat.com Date: Fri Dec 19 19:20:59 2014 +0100 fdo#87471 update locale data for French Burkina Faso [fr-BF] Change-Id: I7f6311c541db507236f6c6ab999aee5db8683f33 (cherry picked from commit 695e2938ff954f6dcceac4b6b170e6724294be2f) diff --git a/i18npool/source/localedata/data/fr_BF.xml b/i18npool/source/localedata/data/fr_BF.xml index ab4ad55..9330801 100644 --- a/i18npool/source/localedata/data/fr_BF.xml +++ b/i18npool/source/localedata/data/fr_BF.xml @@ -43,7 +43,9 @@ MeasurementSystemmetric/MeasurementSystem /LC_CTYPE LC_FORMAT replaceFrom=[CURRENCY] replaceTo=[$F-800C] -DateAcceptancePatternM/D/DateAcceptancePattern +DateAcceptancePatternD/M/DateAcceptancePattern +DateAcceptancePatternD.M.Y/DateAcceptancePattern +DateAcceptancePatternD-M-Y/DateAcceptancePattern FormatElement msgid=FixedFormatskey1 default=true type=medium usage=FIXED_NUMBER formatindex=0 FormatCodeStandard/FormatCode /FormatElement @@ -75,34 +77,34 @@ FormatCode0,00%/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey1 default=true type=short usage=CURRENCY formatindex=12 - FormatCode#Â ##0[CURRENCY];-#Â ##0[CURRENCY]/FormatCode + FormatCode#Â ##0 [CURRENCY];-#Â ##0 [CURRENCY]/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey2 default=false type=medium usage=CURRENCY formatindex=13 - FormatCode#Â ##0,00[CURRENCY];-#Â ##0,00[CURRENCY]/FormatCode + FormatCode#Â ##0,00 [CURRENCY];-#Â ##0,00 [CURRENCY]/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey3 default=false type=medium usage=CURRENCY formatindex=14 - FormatCode#Â ##0[CURRENCY];[RED]-#Â ##0[CURRENCY]/FormatCode + FormatCode#Â ##0 [CURRENCY];[RED]-#Â ##0 [CURRENCY]/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey4 default=true type=medium usage=CURRENCY formatindex=15 - FormatCode#Â ##0,00[CURRENCY];[RED]-#Â ##0,00[CURRENCY]/FormatCode + FormatCode#Â ##0,00 [CURRENCY];[RED]-#Â ##0,00 [CURRENCY]/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey5 default=false type=medium usage=CURRENCY formatindex=16 - FormatCode#Â ##0,00CCC/FormatCode + FormatCode#Â ##0,00 CCC/FormatCode /FormatElement FormatElement msgid=CurrencyFormatskey6 default=false type=medium usage=CURRENCY formatindex=17 - FormatCode#Â ##0,--[CURRENCY];[RED]-#Â ##0,--[CURRENCY]/FormatCode + FormatCode#Â ##0,-- [CURRENCY];[RED]-#Â ##0,-- [CURRENCY]/FormatCode /FormatElement FormatElement msgid=DateFormatskey11 default=true type=short usage=DATE formatindex=18 - FormatCodeYY/MM/DD/FormatCode + FormatCodeD/MM/YY/FormatCode /FormatElement FormatElement msgid=DateFormatskey14 default=true type=long usage=DATE formatindex=19 FormatCodeDD /FormatCode /FormatElement FormatElement msgid=DateFormatskey6 default=true type=medium usage=DATE formatindex=20 - FormatCodeYY/MM/DD/FormatCode + FormatCodeDD/MM/YY/FormatCode /FormatElement FormatElement msgid=DateFormatskey5 default=false type=medium usage=DATE formatindex=21 - FormatCode/MM/DD/FormatCode + FormatCodeDD/MM//FormatCode /FormatElement FormatElement msgid=DateFormatskey15 default=false type=long usage=DATE formatindex=22 FormatCodeD MMM YY/FormatCode @@ -117,7 +119,7 @@ FormatCodeD /FormatCode /FormatElement FormatElement msgid=DateFormatskey22 default=false type=long usage=DATE formatindex=26 - FormatCodeD /FormatCode + FormatCodeD YY/FormatCode /FormatElement FormatElement msgid=DateFormatskey10 default=false type=medium usage=DATE formatindex=27 FormatCodeNN DD/MMM/YY/FormatCode @@ -143,7 +145,7 @@ DefaultNameISO 8601/DefaultName /FormatElement FormatElement msgid=DateFormatskey1 default=false type=medium usage=DATE formatindex=34 - FormatCodeYY/MM/FormatCode + FormatCodeMM/YY/FormatCode /FormatElement FormatElement msgid=DateFormatskey2 default=false type=medium usage=DATE formatindex=35 FormatCodeMMM/DD/FormatCode @@ -179,10 +181,10 @@ FormatCode[HH]:MM:SS,00/FormatCode /FormatElement FormatElement msgid=DateTimeFormatskey1 default=true type=medium usage=DATE_TIME formatindex=46 - FormatCodeYY/MM/DD HH:MM/FormatCode + FormatCodeDD/MM/YY HH:MM/FormatCode /FormatElement FormatElement msgid=DateTimeFormatskey2 default=false type=medium usage=DATE_TIME formatindex=47 - FormatCode/MM/DD HH:MM:SS AM/PM/FormatCode + FormatCodeDD/MM/ HH:MM:SS AM/PM/FormatCode /FormatElement /LC_FORMAT LC_COLLATION @@
[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - i18npool/source
i18npool/source/localedata/data/zh_CN.xml |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) New commits: commit fabdb9356fe2b4d04b7e3ae4f2bfbd92fc306d76 Author: Kevin Suo suokunl...@gmail.com Date: Fri Dec 5 12:48:48 2014 +0800 fdo#83752: date-time cell becomes text string when editing, zh_CN locale In the locale data xml file, formatindex 47 is used for date-and-time editing. If the format code does not match the defined date/time separators, it will cause the cell value to be treated as string text (rather than a date time value). Change-Id: I75a59d943d832f28a0a6153a17e6f671e5328abd Reviewed-on: https://gerrit.libreoffice.org/13306 Reviewed-by: Eike Rathke er...@redhat.com Tested-by: Eike Rathke er...@redhat.com (cherry picked from commit d00a3722b46314c927ba392a31fe4ff5ebc5c0b5) Reviewed-on: https://gerrit.libreoffice.org/13309 diff --git a/i18npool/source/localedata/data/zh_CN.xml b/i18npool/source/localedata/data/zh_CN.xml index 8fc15de..6cd5879 100644 --- a/i18npool/source/localedata/data/zh_CN.xml +++ b/i18npool/source/localedata/data/zh_CN.xml @@ -225,7 +225,7 @@ FormatCodeå¹´MMæDæ¥HHæ¶MMåSSç§/FormatCode /FormatElement FormatElement msgid=DateTimeFormatskey3 default=false type=long usage=DATE_TIME formatindex=47 - FormatCodeYYå¹´MæDæ¥HHæ¶MMå/FormatCode + FormatCode/MM/DD HH:MM:SS/FormatCode /FormatElement FormatElement msgid=DateTimeFormatskey1 default=false type=long usage=DATE_TIME formatindex=58 FormatCodeM/D/YY HH:MM/FormatCode ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits