diff options
Diffstat (limited to 'i18npool/source/transliteration/transliteration_Numeric.cxx')
-rw-r--r-- | i18npool/source/transliteration/transliteration_Numeric.cxx | 23 |
1 files changed, 12 insertions, 11 deletions
diff --git a/i18npool/source/transliteration/transliteration_Numeric.cxx b/i18npool/source/transliteration/transliteration_Numeric.cxx index 22b3769068f5..e0717379ed4c 100644 --- a/i18npool/source/transliteration/transliteration_Numeric.cxx +++ b/i18npool/source/transliteration/transliteration_Numeric.cxx @@ -58,19 +58,20 @@ Sequence< OUString > SAL_CALL #define NUMBER_ZERO 0x30 OUString -transliteration_Numeric::transliterateBullet( const OUString& inStr, sal_Int32 startPos, sal_Int32 nCount, +transliteration_Numeric::transliterateBullet( std::u16string_view inStr, sal_Int32 startPos, sal_Int32 nCount, Sequence< sal_Int32 >* pOffset ) const { sal_Int32 number = -1, j = 0, endPos = startPos + nCount; - if (endPos > inStr.getLength()) - endPos = inStr.getLength(); + if (endPos > static_cast<sal_Int32>(inStr.size())) + endPos = inStr.size(); rtl_uString* pStr = rtl_uString_alloc(nCount); sal_Unicode* out = pStr->buffer; if (pOffset) pOffset->realloc(nCount); + auto ppOffset = pOffset ? pOffset->getArray() : nullptr; for (sal_Int32 i = startPos; i < endPos; i++) { if (isNumber(inStr[i])) @@ -83,22 +84,22 @@ transliteration_Numeric::transliterateBullet( const OUString& inStr, sal_Int32 s } } else { if (number == 0) { - if (pOffset) - (*pOffset)[j] = startPos; + if (ppOffset) + ppOffset[j] = startPos; out[j++] = NUMBER_ZERO; } else if (number > tableSize && !recycleSymbol) { for (sal_Int32 k = startPos; k < i; k++) { - if (pOffset) - (*pOffset)[j] = k; + if (ppOffset) + ppOffset[j] = k; out[j++] = inStr[k]; } } else if (number > 0) { - if (pOffset) - (*pOffset)[j] = startPos; + if (ppOffset) + ppOffset[j] = startPos; out[j++] = table[--number % tableSize]; } else if (i < endPos) { - if (pOffset) - (*pOffset)[j] = i; + if (ppOffset) + ppOffset[j] = i; out[j++] = inStr[i]; } number = -1; |