diff options
Diffstat (limited to 'i18npool/source/characterclassification')
-rw-r--r-- | i18npool/source/characterclassification/cclass_unicode.cxx | 6 | ||||
-rw-r--r-- | i18npool/source/characterclassification/characterclassificationImpl.cxx | 19 |
2 files changed, 12 insertions, 13 deletions
diff --git a/i18npool/source/characterclassification/cclass_unicode.cxx b/i18npool/source/characterclassification/cclass_unicode.cxx index 5b000060c49b..70727dea8cb1 100644 --- a/i18npool/source/characterclassification/cclass_unicode.cxx +++ b/i18npool/source/characterclassification/cclass_unicode.cxx @@ -39,7 +39,9 @@ namespace i18npool { // class cclass_Unicode // ----------------------------------------------------; -cclass_Unicode::cclass_Unicode( const uno::Reference < XComponentContext >& rxContext ) : m_xContext( rxContext ), +cclass_Unicode::cclass_Unicode( const uno::Reference < XComponentContext >& rxContext ) : + trans( new Transliteration_casemapping() ), + m_xContext( rxContext ), pTable( nullptr ), pStart( nullptr ), pCont( nullptr ), @@ -50,12 +52,10 @@ cclass_Unicode::cclass_Unicode( const uno::Reference < XComponentContext >& rxCo cDecimalSep( '.' ), cDecimalSepAlt( 0 ) { - trans = new Transliteration_casemapping(); } cclass_Unicode::~cclass_Unicode() { destroyParserTable(); - delete trans; } diff --git a/i18npool/source/characterclassification/characterclassificationImpl.cxx b/i18npool/source/characterclassification/characterclassificationImpl.cxx index ccccbe432bf9..b9f008d26930 100644 --- a/i18npool/source/characterclassification/characterclassificationImpl.cxx +++ b/i18npool/source/characterclassification/characterclassificationImpl.cxx @@ -36,10 +36,6 @@ CharacterClassificationImpl::CharacterClassificationImpl( } CharacterClassificationImpl::~CharacterClassificationImpl() { - // Clear lookuptable - for (lookupTableItem* p : lookupTable) - delete p; - lookupTable.clear(); } @@ -128,9 +124,10 @@ bool CharacterClassificationImpl::createLocaleSpecificCharacterClassification(co { // to share service between same Language but different Country code, like zh_CN and zh_SG for (size_t l = 0; l < lookupTable.size(); l++) { - cachedItem = lookupTable[l]; + cachedItem = lookupTable[l].get(); if (serviceName == cachedItem->aName) { - lookupTable.push_back( cachedItem = new lookupTableItem(rLocale, serviceName, cachedItem->xCI) ); + lookupTable.emplace_back( new lookupTableItem(rLocale, serviceName, cachedItem->xCI) ); + cachedItem = lookupTable.back().get(); return true; } } @@ -142,7 +139,8 @@ bool CharacterClassificationImpl::createLocaleSpecificCharacterClassification(co if ( xI.is() ) { xCI.set( xI, UNO_QUERY ); if (xCI.is()) { - lookupTable.push_back( cachedItem = new lookupTableItem(rLocale, serviceName, xCI) ); + lookupTable.emplace_back( new lookupTableItem(rLocale, serviceName, xCI) ); + cachedItem = lookupTable.back().get(); return true; } } @@ -156,8 +154,8 @@ CharacterClassificationImpl::getLocaleSpecificCharacterClassification(const Loca if (cachedItem && cachedItem->equals(rLocale)) return cachedItem->xCI; else { - for (lookupTableItem* i : lookupTable) { - cachedItem = i; + for (auto & i : lookupTable) { + cachedItem = i.get(); if (cachedItem->equals(rLocale)) return cachedItem->xCI; } @@ -180,7 +178,8 @@ CharacterClassificationImpl::getLocaleSpecificCharacterClassification(const Loca return cachedItem->xCI; else if (xUCI.is()) { - lookupTable.push_back( cachedItem = new lookupTableItem( rLocale, "Unicode", xUCI)); + lookupTable.emplace_back( new lookupTableItem(rLocale, "Unicode", xUCI) ); + cachedItem = lookupTable.back().get(); return cachedItem->xCI; } } |