summaryrefslogtreecommitdiff
path: root/i18npool/source/transliteration/ignoreDiacritics_CTL.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'i18npool/source/transliteration/ignoreDiacritics_CTL.cxx')
-rw-r--r--i18npool/source/transliteration/ignoreDiacritics_CTL.cxx15
1 files changed, 6 insertions, 9 deletions
diff --git a/i18npool/source/transliteration/ignoreDiacritics_CTL.cxx b/i18npool/source/transliteration/ignoreDiacritics_CTL.cxx
index d706f59f5528..ada76a735b80 100644
--- a/i18npool/source/transliteration/ignoreDiacritics_CTL.cxx
+++ b/i18npool/source/transliteration/ignoreDiacritics_CTL.cxx
@@ -7,6 +7,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+#include <comphelper/sequence.hxx>
#include <rtl/ustrbuf.hxx>
#include <transliteration_Ignore.hxx>
#include <unicode/translit.h>
@@ -59,10 +60,11 @@ ignoreDiacritics_CTL::foldingImpl(const OUString& rInStr, sal_Int32 nStartPos,
if (useOffset)
{
OUStringBuffer aOutBuf(nCount);
- rOffset.realloc(nCount);
+
+ std::vector<sal_Int32> aOffset;
+ aOffset.reserve(nCount);
sal_Int32 nPosition = nStartPos;
- sal_Int32 nOffset = 0;
while (nPosition < nStartPos + nCount)
{
sal_Int32 nIndex = nPosition;
@@ -70,19 +72,14 @@ ignoreDiacritics_CTL::foldingImpl(const OUString& rInStr, sal_Int32 nStartPos,
icu::UnicodeString aUStr(nChar);
m_transliterator->transliterate(aUStr);
- if (nOffset + aUStr.length() > rOffset.getLength())
- rOffset.realloc(rOffset.getLength() + aUStr.length());
- sal_Int32* pOffset = rOffset.getArray();
-
aOutBuf.append(reinterpret_cast<const sal_Unicode*>(aUStr.getBuffer()), aUStr.length());
- for (const sal_Int32 nOffsetEnd = nOffset+aUStr.length(); nOffset < nOffsetEnd; nOffset++)
- pOffset[nOffset] = nPosition;
+ std::fill_n(std::back_inserter(aOffset), aUStr.length(), nPosition);
nPosition = nIndex;
}
- rOffset.realloc(aOutBuf.getLength());
+ rOffset = comphelper::containerToSequence(aOffset);
return aOutBuf.makeStringAndClear();
}
else