basic/source/classes/image.cxx | 47 ++++------ basic/source/inc/image.hxx | 3 i18npool/inc/cclass_unicode.hxx | 6 - i18npool/source/characterclassification/cclass_unicode_parser.cxx | 23 +--- 4 files changed, 32 insertions(+), 47 deletions(-)
New commits: commit 2c1f77d34e5a660a72170e30986bd77d9b965ca1 Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Thu Apr 26 11:37:45 2018 +0200 loplugin:useuniqueptr in cclass_Unicode Change-Id: Iecfff4104ef19f9bc6f83a403d99aecb2eda2514 Reviewed-on: https://gerrit.libreoffice.org/53607 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/i18npool/inc/cclass_unicode.hxx b/i18npool/inc/cclass_unicode.hxx index 2b6e3d9e890f..d962a3216585 100644 --- a/i18npool/inc/cclass_unicode.hxx +++ b/i18npool/inc/cclass_unicode.hxx @@ -131,9 +131,9 @@ private: css::uno::Reference < css::i18n::XNativeNumberSupplier > xNatNumSup; OUString aStartChars; OUString aContChars; - ParserFlags* pTable; - ParserFlags* pStart; - ParserFlags* pCont; + std::unique_ptr<ParserFlags[]> pTable; + std::unique_ptr<ParserFlags[]> pStart; + std::unique_ptr<ParserFlags[]> pCont; sal_Int32 nStartTypes; sal_Int32 nContTypes; ScanState eState; diff --git a/i18npool/source/characterclassification/cclass_unicode_parser.cxx b/i18npool/source/characterclassification/cclass_unicode_parser.cxx index 981912b53c07..a5cb1b680984 100644 --- a/i18npool/source/characterclassification/cclass_unicode_parser.cxx +++ b/i18npool/source/characterclassification/cclass_unicode_parser.cxx @@ -410,18 +410,16 @@ void cclass_Unicode::initParserTable( const Locale& rLocale, sal_Int32 startChar setupInternational( rLocale ); // Memory of pTable is reused. if ( !pTable ) - pTable = new ParserFlags[nDefCnt]; - memcpy( pTable, pDefaultParserTable, sizeof(ParserFlags) * nDefCnt ); + pTable.reset(new ParserFlags[nDefCnt]); + memcpy( pTable.get(), pDefaultParserTable, sizeof(ParserFlags) * nDefCnt ); // Start and cont tables only need reallocation if different length. if ( pStart && userDefinedCharactersStart.getLength() != aStartChars.getLength() ) { - delete [] pStart; - pStart = nullptr; + pStart.reset(); } if ( pCont && userDefinedCharactersCont.getLength() != aContChars.getLength() ) { - delete [] pCont; - pCont = nullptr; + pCont.reset(); } nStartTypes = startCharTokenType; nContTypes = contCharTokenType; @@ -515,7 +513,7 @@ void cclass_Unicode::initParserTable( const Locale& rLocale, sal_Int32 startChar if ( nLen ) { if ( !pStart ) - pStart = new ParserFlags[ nLen ]; + pStart.reset(new ParserFlags[ nLen ]); const sal_Unicode* p = aStartChars.getStr(); for ( sal_Int32 j=0; j<nLen; j++, p++ ) { @@ -529,7 +527,7 @@ void cclass_Unicode::initParserTable( const Locale& rLocale, sal_Int32 startChar if ( nLen ) { if ( !pCont ) - pCont = new ParserFlags[ nLen ]; + pCont.reset(new ParserFlags[ nLen ]); const sal_Unicode* p = aContChars.getStr(); for ( sal_Int32 j=0; j<nLen; j++ ) { @@ -543,12 +541,9 @@ void cclass_Unicode::initParserTable( const Locale& rLocale, sal_Int32 startChar void cclass_Unicode::destroyParserTable() { - if ( pCont ) - delete [] pCont; - if ( pStart ) - delete [] pStart; - if ( pTable ) - delete [] pTable; + pCont.reset(); + pStart.reset(); + pTable.reset(); } commit fcd589d4f304daadb9ddc5308c577e5a789c1293 Author: Noel Grandin <noel.gran...@collabora.co.uk> Date: Wed Apr 25 14:51:38 2018 +0200 loplugin:useuniqueptr pStringOff in SbiImage Change-Id: I05de3e910bf857e095c99cade6fec22ccb2dd99d Reviewed-on: https://gerrit.libreoffice.org/53606 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/basic/source/classes/image.cxx b/basic/source/classes/image.cxx index 9a26496db45b..34a6431c1876 100644 --- a/basic/source/classes/image.cxx +++ b/basic/source/classes/image.cxx @@ -29,12 +29,10 @@ SbiImage::SbiImage() { - pStringOff = nullptr; pStrings = nullptr; pCode = nullptr; pLegacyPCode = nullptr; nFlags = SbiImageFlags::NONE; - nStrings = 0; nStringSize= 0; nCodeSize = 0; nLegacyCodeSize = @@ -54,15 +52,13 @@ SbiImage::~SbiImage() void SbiImage::Clear() { - delete[] pStringOff; + mvStringOffsets.clear(); delete[] pStrings; delete[] pCode; ReleaseLegacyBuffer(); - pStringOff = nullptr; pStrings = nullptr; pCode = nullptr; nFlags = SbiImageFlags::NONE; - nStrings = 0; nStringSize= 0; nLegacyCodeSize = 0; nCodeSize = 0; @@ -205,11 +201,10 @@ bool SbiImage::Load( SvStream& r, sal_uInt32& nVersion ) nCount = nMaxStrings; } MakeStrings( nCount ); - short i; - for( i = 0; i < nStrings && SbiGood( r ); i++ ) + for( size_t i = 0; i < mvStringOffsets.size() && SbiGood( r ); i++ ) { r.ReadUInt32( nOff ); - pStringOff[ i ] = static_cast<sal_uInt16>(nOff); + mvStringOffsets[ i ] = static_cast<sal_uInt16>(nOff); } r.ReadUInt32( nLen ); if( SbiGood( r ) ) @@ -220,9 +215,9 @@ bool SbiImage::Load( SvStream& r, sal_uInt32& nVersion ) std::unique_ptr<char[]> pByteStrings(new char[ nLen ]); r.ReadBytes(pByteStrings.get(), nStringSize); - for( short j = 0; j < nStrings; j++ ) + for( size_t j = 0; j < mvStringOffsets.size(); j++ ) { - sal_uInt16 nOff2 = static_cast<sal_uInt16>(pStringOff[ j ]); + sal_uInt16 nOff2 = static_cast<sal_uInt16>(mvStringOffsets[ j ]); OUString aStr( pByteStrings.get() + nOff2, strlen(pByteStrings.get() + nOff2), eCharSet ); memcpy( pStrings + nOff2, aStr.getStr(), (aStr.getLength() + 1) * sizeof( sal_Unicode ) ); } @@ -424,22 +419,20 @@ bool SbiImage::Save( SvStream& r, sal_uInt32 nVer ) SbiCloseRecord( r, nPos ); } // String-Pool? - if( nStrings ) + if( !mvStringOffsets.empty() ) { - nPos = SbiOpenRecord( r, FileOffset::StringPool, nStrings ); + nPos = SbiOpenRecord( r, FileOffset::StringPool, mvStringOffsets.size() ); // For every String: // sal_uInt32 Offset of the Strings in the Stringblock - short i; - - for( i = 0; i < nStrings && SbiGood( r ); i++ ) + for( size_t i = 0; i < mvStringOffsets.size() && SbiGood( r ); i++ ) { - r.WriteUInt32( pStringOff[ i ] ); + r.WriteUInt32( mvStringOffsets[ i ] ); } // Then the String-Block std::unique_ptr<char[]> pByteStrings(new char[ nStringSize ]); - for( i = 0; i < nStrings; i++ ) + for( size_t i = 0; i < mvStringOffsets.size(); i++ ) { - sal_uInt16 nOff = static_cast<sal_uInt16>(pStringOff[ i ]); + sal_uInt16 nOff = static_cast<sal_uInt16>(mvStringOffsets[ i ]); OString aStr(OUStringToOString(OUString(pStrings + nOff), eCharSet)); memcpy( pByteStrings.get() + nOff, aStr.getStr(), (aStr.getLength() + 1) * sizeof( char ) ); } @@ -538,14 +531,12 @@ bool SbiImage::Save( SvStream& r, sal_uInt32 nVer ) void SbiImage::MakeStrings( short nSize ) { - nStrings = 0; nStringIdx = 0; nStringOff = 0; nStringSize = 1024; pStrings = new sal_Unicode[ nStringSize ]; - pStringOff = new sal_uInt32[ nSize ]; - nStrings = nSize; - memset( pStringOff, 0, nSize * sizeof( sal_uInt32 ) ); + mvStringOffsets.resize(nSize); + memset( mvStringOffsets.data(), 0, nSize * sizeof( sal_uInt32 ) ); memset( pStrings, 0, nStringSize * sizeof( sal_Unicode ) ); } @@ -553,7 +544,7 @@ void SbiImage::MakeStrings( short nSize ) // growing in 1K-Steps void SbiImage::AddString( const OUString& r ) { - if( nStringIdx >= nStrings ) + if( nStringIdx >= short(mvStringOffsets.size()) ) { bError = true; } @@ -577,11 +568,11 @@ void SbiImage::AddString( const OUString& r ) } if( !bError ) { - pStringOff[ nStringIdx++ ] = nStringOff; + mvStringOffsets[ nStringIdx++ ] = nStringOff; memcpy( pStrings + nStringOff, r.getStr(), len * sizeof( sal_Unicode ) ); nStringOff = nStringOff + len; // Last String? The update the size of the buffer - if( nStringIdx >= nStrings ) + if( nStringIdx >= short(mvStringOffsets.size()) ) { nStringSize = nStringOff; } @@ -622,15 +613,15 @@ void SbiImage::AddEnum(SbxObject* pObject) // Register enum type // Note: IDs start with 1 OUString SbiImage::GetString( short nId ) const { - if( nId && nId <= nStrings ) + if( nId && nId <= short(mvStringOffsets.size()) ) { - sal_uInt32 nOff = pStringOff[ nId - 1 ]; + sal_uInt32 nOff = mvStringOffsets[ nId - 1 ]; sal_Unicode* pStr = pStrings + nOff; // #i42467: Special treatment for vbNullChar if( *pStr == 0 ) { - sal_uInt32 nNextOff = (nId < nStrings) ? pStringOff[ nId ] : nStringOff; + sal_uInt32 nNextOff = (nId < short(mvStringOffsets.size())) ? mvStringOffsets[ nId ] : nStringOff; sal_uInt32 nLen = nNextOff - nOff - 1; if( nLen == 1 ) { diff --git a/basic/source/inc/image.hxx b/basic/source/inc/image.hxx index 404e411c8fe0..f79e3c51c98a 100644 --- a/basic/source/inc/image.hxx +++ b/basic/source/inc/image.hxx @@ -46,13 +46,12 @@ class SbiImage { SbxArrayRef rTypes; // User defined types SbxArrayRef rEnums; // Enum types - sal_uInt32* pStringOff; // StringId-Offsets + std::vector<sal_uInt32> mvStringOffsets; // StringId-Offsets sal_Unicode* pStrings; // StringPool char* pCode; // Code-Image char* pLegacyPCode; // Code-Image bool bError; SbiImageFlags nFlags; - short nStrings; sal_uInt32 nStringSize; sal_uInt32 nCodeSize; sal_uInt16 nLegacyCodeSize; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits