summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoel Grandin <noel.grandin@collabora.co.uk>2017-06-26 09:41:14 +0200
committerNoel Grandin <noel.grandin@collabora.co.uk>2017-06-27 08:42:36 +0200
commit513ac8eb79e45de332d7ddab5b27c70578b904f1 (patch)
tree46f35b236d75651eb612a088e2cdfd48aa85a21c
parent72b706d7def9e4805e35f3174170dad422b2e7f8 (diff)
loplugin:useuniqueptr in various
extending it to find places we can use std::unique_ptr on arrays Change-Id: I9feb1d12d738d6931e752ecb6dd51cbc1540c81b Reviewed-on: https://gerrit.libreoffice.org/39255 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
-rw-r--r--i18npool/source/localedata/LocaleNode.cxx24
-rw-r--r--i18npool/source/localedata/LocaleNode.hxx7
-rw-r--r--i18npool/source/search/levdis.hxx13
-rw-r--r--include/svl/zformat.hxx5
-rw-r--r--include/svtools/ctrltool.hxx3
-rw-r--r--include/tools/inetstrm.hxx3
-rw-r--r--io/source/TextInputStream/TextInputStream.cxx43
-rw-r--r--sot/source/sdstor/stgio.cxx9
-rw-r--r--stoc/source/invocation_adapterfactory/iafactory.cxx31
-rw-r--r--svl/source/numbers/zformat.cxx77
-rw-r--r--svtools/source/control/ctrltool.cxx18
-rw-r--r--tools/source/inet/inetstrm.cxx11
-rw-r--r--xmlhelp/source/cxxhelp/provider/databases.cxx27
-rw-r--r--xmlhelp/source/cxxhelp/provider/databases.hxx3
-rw-r--r--xmlscript/source/xml_helper/xml_impctx.cxx3
15 files changed, 102 insertions, 175 deletions
diff --git a/i18npool/source/localedata/LocaleNode.cxx b/i18npool/source/localedata/LocaleNode.cxx
index c1c5aaa81e32..8464775b2b2d 100644
--- a/i18npool/source/localedata/LocaleNode.cxx
+++ b/i18npool/source/localedata/LocaleNode.cxx
@@ -44,9 +44,6 @@ LocaleNode::LocaleNode (const OUString& name, const Reference< XAttributeList >
: aName(name)
, aAttribs(attr)
, parent(nullptr)
- , children(nullptr)
- , nChildren(0)
- , childArrSize(0)
, nError(0)
{
}
@@ -54,7 +51,7 @@ LocaleNode::LocaleNode (const OUString& name, const Reference< XAttributeList >
int LocaleNode::getError() const
{
int err = nError;
- for (sal_Int32 i=0;i<nChildren;i++)
+ for (size_t i=0;i<children.size();i++)
err += children[i]->getError();
return err;
}
@@ -69,22 +66,14 @@ void LocaleNode::print () const {
void LocaleNode::printR () const {
print();
- for (sal_Int32 i=0;i<nChildren;i++)
+ for (size_t i=0;i<children.size();i++)
children[i]->printR();
printf ("\t");
print();
}
void LocaleNode::addChild ( LocaleNode * node) {
- if (childArrSize <= nChildren) {
- LocaleNode ** arrN = new LocaleNode*[childArrSize+10];
- for (sal_Int32 i = 0; i<childArrSize; ++i)
- arrN[i] = children[i];
- delete [] children;
- childArrSize += 10;
- children = arrN;
- }
- children[nChildren++] = node;
+ children.push_back(node);
node->parent = this;
}
@@ -100,7 +89,7 @@ const LocaleNode* LocaleNode::getRoot() const
const LocaleNode * LocaleNode::findNode ( const sal_Char *name) const {
if (aName.equalsAscii(name))
return this;
- for (sal_Int32 i = 0; i< nChildren; i++) {
+ for (size_t i = 0; i< children.size(); i++) {
const LocaleNode *n=children[i]->findNode(name);
if (n)
return n;
@@ -110,9 +99,8 @@ const LocaleNode * LocaleNode::findNode ( const sal_Char *name) const {
LocaleNode::~LocaleNode()
{
- for (sal_Int32 i=0; i < nChildren; ++i)
+ for (size_t i=0; i < children.size(); ++i)
delete children[i];
- delete [] children;
}
LocaleNode* LocaleNode::createNode (const OUString& name, const Reference< XAttributeList > & attr)
@@ -228,7 +216,7 @@ void LocaleNode::generateCode (const OFileWriter &of) const
++nError;
fprintf( stderr, "Error: Locale versionDTD is not %s, see comment in locale.dtd\n", LOCALE_VERSION_DTD);
}
- for (sal_Int32 i=0; i<nChildren;i++)
+ for (size_t i=0; i<children.size(); i++)
children[i]->generateCode (of);
// print_node( this );
}
diff --git a/i18npool/source/localedata/LocaleNode.hxx b/i18npool/source/localedata/LocaleNode.hxx
index b64bdbb4ba0d..c3e6c57e6a22 100644
--- a/i18npool/source/localedata/LocaleNode.hxx
+++ b/i18npool/source/localedata/LocaleNode.hxx
@@ -18,6 +18,7 @@
*/
#ifndef INCLUDED_I18NPOOL_SOURCE_LOCALEDATA_LOCALENODE_HXX
#define INCLUDED_I18NPOOL_SOURCE_LOCALEDATA_LOCALENODE_HXX
+
#include <com/sun/star/xml/sax/XParser.hpp>
#include <com/sun/star/xml/sax/XExtendedDocumentHandler.hpp>
@@ -84,9 +85,7 @@ class LocaleNode
OUString aValue;
Attr aAttribs;
LocaleNode * parent;
- LocaleNode* * children;
- sal_Int32 nChildren;
- sal_Int32 childArrSize;
+ std::vector<LocaleNode*> children;
protected:
mutable int nError;
@@ -97,7 +96,7 @@ public:
const OUString& getName() const { return aName; };
const OUString& getValue() const { return aValue; };
const Attr& getAttr() const { return aAttribs; };
- sal_Int32 getNumberOfChildren () const { return nChildren; };
+ sal_Int32 getNumberOfChildren () const { return sal_Int32(children.size()); };
LocaleNode * getChildAt (sal_Int32 idx) const { return children[idx] ; };
const LocaleNode * findNode ( const sal_Char *name) const;
void print () const;
diff --git a/i18npool/source/search/levdis.hxx b/i18npool/source/search/levdis.hxx
index daf8778806a3..1c4604ffd11e 100644
--- a/i18npool/source/search/levdis.hxx
+++ b/i18npool/source/search/levdis.hxx
@@ -96,8 +96,8 @@
/** "Safe" memory allocation in ctor */
class WLevDisPatternMem
{
- sal_Unicode *cp;
- bool *bp;
+ std::unique_ptr<sal_Unicode[]> cp;
+ std::unique_ptr<bool[]> bp;
public:
explicit WLevDisPatternMem( sal_Int32 s )
: cp(new sal_Unicode[s])
@@ -105,13 +105,8 @@ public:
{
}
- ~WLevDisPatternMem()
- {
- delete [] cp;
- delete [] bp;
- }
- sal_Unicode* GetcPtr() const { return cp; }
- bool* GetbPtr() const { return bp; }
+ sal_Unicode* GetcPtr() const { return cp.get(); }
+ bool* GetbPtr() const { return bp.get(); }
};
class WLevDisDistanceMem
diff --git a/include/svl/zformat.hxx b/include/svl/zformat.hxx
index e10060c04240..7e358d0c096a 100644
--- a/include/svl/zformat.hxx
+++ b/include/svl/zformat.hxx
@@ -23,6 +23,7 @@
#include <i18nlangtag/mslangid.hxx>
#include <svl/zforlist.hxx>
#include <svl/nfkeytab.hxx>
+#include <vector>
namespace utl {
class DigitGroupingIterator;
@@ -48,8 +49,8 @@ enum SvNumberformatLimitOps
struct ImpSvNumberformatInfo // Struct for FormatInfo
{
- OUString* sStrArray; // Array of symbols
- short* nTypeArray; // Array of infos
+ std::vector<OUString> sStrArray; // Array of symbols
+ std::vector<short> nTypeArray; // Array of infos
sal_uInt16 nThousand; // Count of group separator sequences
sal_uInt16 nCntPre; // Count of digits before decimal point
sal_uInt16 nCntPost; // Count of digits after decimal point
diff --git a/include/svtools/ctrltool.hxx b/include/svtools/ctrltool.hxx
index 3b11eac75e36..4c642df4be47 100644
--- a/include/svtools/ctrltool.hxx
+++ b/include/svtools/ctrltool.hxx
@@ -144,7 +144,8 @@ private:
OUString maBoldItalic;
OUString maBlack;
OUString maBlackItalic;
- sal_IntPtr* mpSizeAry;
+ mutable std::unique_ptr<sal_IntPtr[]>
+ mpSizeAry;
VclPtr<OutputDevice> mpDev;
VclPtr<OutputDevice> mpDev2;
std::vector<std::unique_ptr<ImplFontListNameInfo>> m_Entries;
diff --git a/include/tools/inetstrm.hxx b/include/tools/inetstrm.hxx
index d09aa94fb4d3..ba6f6aa14744 100644
--- a/include/tools/inetstrm.hxx
+++ b/include/tools/inetstrm.hxx
@@ -22,6 +22,7 @@
#include <tools/toolsdllapi.h>
#include <tools/stream.hxx>
#include <sal/types.h>
+#include <vector>
class INetMIMEMessage;
class SvStream;
@@ -31,7 +32,7 @@ class TOOLS_DLLPUBLIC INetMIMEMessageStream
INetMIMEMessage *pSourceMsg;
bool bHeaderGenerated;
- sal_Char *pBuffer;
+ std::vector<sal_Char> mvBuffer;
sal_Char *pRead;
sal_Char *pWrite;
diff --git a/io/source/TextInputStream/TextInputStream.cxx b/io/source/TextInputStream/TextInputStream.cxx
index b49c5ec2e1c1..2beb825ed972 100644
--- a/io/source/TextInputStream/TextInputStream.cxx
+++ b/io/source/TextInputStream/TextInputStream.cxx
@@ -37,6 +37,8 @@
#include "services.hxx"
+#include <vector>
+
#define IMPLEMENTATION_NAME "com.sun.star.comp.io.TextInputStream"
#define SERVICE_NAME "com.sun.star.io.TextInputStream"
@@ -67,12 +69,10 @@ class OTextInputStream : public WeakImplHelper< XTextInputStream2, XServiceInfo
Sequence<sal_Int8> mSeqSource;
// Internal buffer for characters that are already converted successfully
- sal_Unicode* mpBuffer;
- sal_Int32 mnBufferSize;
+ std::vector<sal_Unicode> mvBuffer;
sal_Int32 mnCharsInBuffer;
bool mbReachedEOF;
- void implResizeBuffer();
/// @throws IOException
/// @throws RuntimeException
OUString implReadString( const Sequence< sal_Unicode >& Delimiters,
@@ -113,8 +113,7 @@ OTextInputStream::OTextInputStream()
, mConvText2Unicode(nullptr)
, mContextText2Unicode(nullptr)
, mSeqSource(READ_BYTE_COUNT)
- , mpBuffer(nullptr)
- , mnBufferSize(0)
+ , mvBuffer(INITIAL_UNICODE_BUFFER_CAPACITY, 0)
, mnCharsInBuffer(0)
, mbReachedEOF(false)
{
@@ -127,18 +126,6 @@ OTextInputStream::~OTextInputStream()
rtl_destroyTextToUnicodeContext( mConvText2Unicode, mContextText2Unicode );
rtl_destroyTextToUnicodeConverter( mConvText2Unicode );
}
-
- delete[] mpBuffer;
-}
-
-void OTextInputStream::implResizeBuffer()
-{
- sal_Int32 nNewBufferSize = mnBufferSize * 2;
- sal_Unicode* pNewBuffer = new sal_Unicode[ nNewBufferSize ];
- memcpy( pNewBuffer, mpBuffer, mnCharsInBuffer * sizeof( sal_Unicode ) );
- delete[] mpBuffer;
- mpBuffer = pNewBuffer;
- mnBufferSize = nNewBufferSize;
}
@@ -175,12 +162,6 @@ OUString OTextInputStream::implReadString( const Sequence< sal_Unicode >& Delimi
if( !mbEncodingInitialized )
return aRetStr;
- if( !mpBuffer )
- {
- mnBufferSize = INITIAL_UNICODE_BUFFER_CAPACITY;
- mpBuffer = new sal_Unicode[ mnBufferSize ];
- }
-
// Only for bFindLineEnd
sal_Unicode cLineEndChar1 = 0x0D;
sal_Unicode cLineEndChar2 = 0x0A;
@@ -208,7 +189,7 @@ OUString OTextInputStream::implReadString( const Sequence< sal_Unicode >& Delimi
// Now there should be characters available
// (otherwise the loop should have been breaked before)
- sal_Unicode c = mpBuffer[ nBufferReadPos++ ];
+ sal_Unicode c = mvBuffer[ nBufferReadPos++ ];
if( bFindLineEnd )
{
@@ -257,10 +238,10 @@ OUString OTextInputStream::implReadString( const Sequence< sal_Unicode >& Delimi
// Create string
if( nCopyLen )
- aRetStr = OUString( mpBuffer, nCopyLen );
+ aRetStr = OUString( mvBuffer.data(), nCopyLen );
// Copy rest of buffer
- memmove( mpBuffer, mpBuffer + nBufferReadPos,
+ memmove( mvBuffer.data(), mvBuffer.data() + nBufferReadPos,
(mnCharsInBuffer - nBufferReadPos) * sizeof( sal_Unicode ) );
mnCharsInBuffer -= nBufferReadPos;
@@ -270,10 +251,10 @@ OUString OTextInputStream::implReadString( const Sequence< sal_Unicode >& Delimi
sal_Int32 OTextInputStream::implReadNext()
{
- sal_Int32 nFreeBufferSize = mnBufferSize - mnCharsInBuffer;
+ sal_Int32 nFreeBufferSize = mvBuffer.size() - mnCharsInBuffer;
if( nFreeBufferSize < READ_BYTE_COUNT )
- implResizeBuffer();
- nFreeBufferSize = mnBufferSize - mnCharsInBuffer;
+ mvBuffer.resize(mvBuffer.size() * 2);
+ nFreeBufferSize = mvBuffer.size() - mnCharsInBuffer;
try
{
@@ -297,7 +278,7 @@ sal_Int32 OTextInputStream::implReadNext()
mContextText2Unicode,
reinterpret_cast<const char*>(&( pbSource[nSourceCount] )),
nTotalRead - nSourceCount,
- mpBuffer + mnCharsInBuffer + nTargetCount,
+ mvBuffer.data() + mnCharsInBuffer + nTargetCount,
nFreeBufferSize - nTargetCount,
RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_DEFAULT |
RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT |
@@ -309,7 +290,7 @@ sal_Int32 OTextInputStream::implReadNext()
bool bCont = false;
if( uiInfo & RTL_TEXTTOUNICODE_INFO_DESTBUFFERTOSMALL )
{
- implResizeBuffer();
+ mvBuffer.resize(mvBuffer.size() * 2);
bCont = true;
}
diff --git a/sot/source/sdstor/stgio.cxx b/sot/source/sdstor/stgio.cxx
index 1ac21705ad03..a464ed1a06b9 100644
--- a/sot/source/sdstor/stgio.cxx
+++ b/sot/source/sdstor/stgio.cxx
@@ -145,14 +145,13 @@ bool StgIo::CommitAll()
class EasyFat
{
- sal_Int32 *pFat;
- bool *pFree;
+ std::unique_ptr<sal_Int32[]> pFat;
+ std::unique_ptr<bool[]> pFree;
sal_Int32 nPages;
sal_Int32 nPageSize;
public:
EasyFat( StgIo & rIo, StgStrm *pFatStream, sal_Int32 nPSize );
- ~EasyFat() { delete[] pFat; delete[] pFree; }
sal_Int32 GetPageSize() { return nPageSize; }
@@ -164,8 +163,8 @@ EasyFat::EasyFat( StgIo& rIo, StgStrm* pFatStream, sal_Int32 nPSize )
{
nPages = pFatStream->GetSize() >> 2;
nPageSize = nPSize;
- pFat = new sal_Int32[ nPages ];
- pFree = new bool[ nPages ];
+ pFat.reset( new sal_Int32[ nPages ] );
+ pFree.reset( new bool[ nPages ] );
rtl::Reference< StgPage > pPage;
sal_Int32 nFatPageSize = (1 << rIo.m_aHdr.GetPageSize()) - 2;
diff --git a/stoc/source/invocation_adapterfactory/iafactory.cxx b/stoc/source/invocation_adapterfactory/iafactory.cxx
index b7b3620a5d61..a4eba831991a 100644
--- a/stoc/source/invocation_adapterfactory/iafactory.cxx
+++ b/stoc/source/invocation_adapterfactory/iafactory.cxx
@@ -48,6 +48,7 @@
#include <unordered_map>
#include <unordered_set>
+#include <vector>
#define IMPLNAME "com.sun.star.comp.stoc.InvocationAdapterFactory"
@@ -130,8 +131,7 @@ struct AdapterImpl
void * m_key; // map key
uno_Interface * m_pReceiver; // XInvocation receiver
- sal_Int32 m_nInterfaces;
- InterfaceAdapterImpl * m_pInterfaces;
+ std::vector<InterfaceAdapterImpl> m_vInterfaces;
// XInvocation calls
void getValue(
@@ -166,12 +166,11 @@ struct AdapterImpl
inline AdapterImpl::~AdapterImpl()
{
- for ( sal_Int32 nPos = m_nInterfaces; nPos--; )
+ for ( size_t nPos = m_vInterfaces.size(); nPos--; )
{
::typelib_typedescription_release(
- &m_pInterfaces[ nPos ].m_pTypeDescr->aBase );
+ &m_vInterfaces[ nPos ].m_pTypeDescr->aBase );
}
- delete [] m_pInterfaces;
(*m_pReceiver->release)( m_pReceiver );
m_pFactory->release();
@@ -577,15 +576,15 @@ static void SAL_CALL adapter_dispatch(
typelib_TypeDescriptionReference * pDemanded =
*static_cast<typelib_TypeDescriptionReference **>(pArgs[0]);
// pInterfaces[0] is XInterface
- for ( sal_Int32 nPos = 0; nPos < that->m_nInterfaces; ++nPos )
+ for ( size_t nPos = 0; nPos < that->m_vInterfaces.size(); ++nPos )
{
typelib_InterfaceTypeDescription * pTD =
- that->m_pInterfaces[nPos].m_pTypeDescr;
+ that->m_vInterfaces[nPos].m_pTypeDescr;
while (pTD)
{
if (type_equals( pTD->aBase.pWeakRef, pDemanded ))
{
- uno_Interface * pUnoI2 = &that->m_pInterfaces[nPos];
+ uno_Interface * pUnoI2 = &that->m_vInterfaces[nPos];
::uno_any_construct(
static_cast<uno_Any *>(pReturn), &pUnoI2,
&pTD->aBase, nullptr );
@@ -632,15 +631,14 @@ AdapterImpl::AdapterImpl(
FactoryImpl * pFactory )
: m_nRef( 1 ),
m_pFactory( pFactory ),
- m_key( key )
+ m_key( key ),
+ m_vInterfaces( rTypes.getLength() )
{
// init adapters
- m_nInterfaces = rTypes.getLength();
- m_pInterfaces = new InterfaceAdapterImpl[ rTypes.getLength() ];
const Type * pTypes = rTypes.getConstArray();
for ( sal_Int32 nPos = rTypes.getLength(); nPos--; )
{
- InterfaceAdapterImpl * pInterface = &m_pInterfaces[nPos];
+ InterfaceAdapterImpl * pInterface = &m_vInterfaces[nPos];
pInterface->acquire = adapter_acquire;
pInterface->release = adapter_release;
pInterface->pDispatcher = adapter_dispatch;
@@ -654,9 +652,8 @@ AdapterImpl::AdapterImpl(
for ( sal_Int32 n = 0; n < nPos; ++n )
{
::typelib_typedescription_release(
- &m_pInterfaces[ n ].m_pTypeDescr->aBase );
+ &m_vInterfaces[ n ].m_pTypeDescr->aBase );
}
- delete [] m_pInterfaces;
throw RuntimeException(
"cannot retrieve all interface type infos!" );
}
@@ -780,11 +777,11 @@ static inline AdapterImpl * lookup_adapter(
Type const & rType = pTypes[ nPosTypes ];
// find in adapter's type list
sal_Int32 nPos;
- for ( nPos = that->m_nInterfaces; nPos--; )
+ for ( nPos = that->m_vInterfaces.size(); nPos--; )
{
if (::typelib_typedescriptionreference_isAssignableFrom(
rType.getTypeLibType(),
- that->m_pInterfaces[ nPos ].m_pTypeDescr->aBase.pWeakRef ))
+ that->m_vInterfaces[ nPos ].m_pTypeDescr->aBase.pWeakRef ))
{
// found
break;
@@ -847,7 +844,7 @@ Reference< XInterface > FactoryImpl::createAdapter(
}
}
// map one interface to C++
- uno_Interface * pUnoI = &that->m_pInterfaces[ 0 ];
+ uno_Interface * pUnoI = &that->m_vInterfaces[ 0 ];
m_aUno2Cpp.mapInterface(
reinterpret_cast<void **>(&xRet), pUnoI, cppu::UnoType<decltype(xRet)>::get() );
that->release();
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index 6b06d6beed62..31073130b07b 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -269,8 +269,6 @@ sal_uInt8 SvNumberNatNum::MapNatNumToDBNum( sal_uInt8 nNatNum, LanguageType eLan
ImpSvNumFor::ImpSvNumFor()
{
nAnzStrings = 0;
- aI.nTypeArray = nullptr;
- aI.sStrArray = nullptr;
aI.eScannedType = css::util::NumberFormat::UNDEFINED;
aI.bThousand = false;
aI.nThousand = 0;
@@ -282,27 +280,15 @@ ImpSvNumFor::ImpSvNumFor()
ImpSvNumFor::~ImpSvNumFor()
{
- delete [] aI.sStrArray;
- delete [] aI.nTypeArray;
}
void ImpSvNumFor::Enlarge(sal_uInt16 nAnz)
{
if ( nAnzStrings != nAnz )
{
- delete [] aI.nTypeArray;
- delete [] aI.sStrArray;
nAnzStrings = nAnz;
- if ( nAnz )
- {
- aI.nTypeArray = new short[nAnz];
- aI.sStrArray = new OUString[nAnz];
- }
- else
- {
- aI.nTypeArray = nullptr;
- aI.sStrArray = nullptr;
- }
+ aI.nTypeArray.resize(nAnz);
+ aI.sStrArray.resize(nAnz);
}
}
@@ -3363,11 +3349,11 @@ bool SvNumberformat::ImpIsIso8601( const ImpSvNumFor& rNumFor ) const
eNotIso
};
State eState = eNone;
- short const * const pType = rNumFor.Info().nTypeArray;
+ auto & rTypeArray = rNumFor.Info().nTypeArray;
sal_uInt16 nAnz = rNumFor.GetCount();
for (sal_uInt16 i=0; i < nAnz && !bIsIso && eState != eNotIso; ++i)
{
- switch ( pType[i] )
+ switch ( rTypeArray[i] )
{
case NF_KEY_YY: // two digits not strictly ISO 8601
case NF_KEY_YYYY:
@@ -4652,7 +4638,7 @@ const OUString* SvNumberformat::GetNumForString( sal_uInt16 nNumFor, sal_uInt16
nPos = nAnz - 1;
if ( bString )
{ // Backwards
- short* pType = NumFor[nNumFor].Info().nTypeArray + nPos;
+ short const * pType = NumFor[nNumFor].Info().nTypeArray.data() + nPos;
while ( nPos > 0 && (*pType != NF_SYMBOLTYPE_STRING) &&
(*pType != NF_SYMBOLTYPE_CURRENCY) )
{
@@ -4672,7 +4658,7 @@ const OUString* SvNumberformat::GetNumForString( sal_uInt16 nNumFor, sal_uInt16
else if ( bString )
{
// vorwaerts
- short* pType = NumFor[nNumFor].Info().nTypeArray + nPos;
+ short const * pType = NumFor[nNumFor].Info().nTypeArray.data() + nPos;
while ( nPos < nAnz && (*pType != NF_SYMBOLTYPE_STRING) &&
(*pType != NF_SYMBOLTYPE_CURRENCY) )
{
@@ -4730,26 +4716,25 @@ bool SvNumberformat::IsNegativeInBracket() const
{
return false;
}
- OUString *tmpStr = NumFor[1].Info().sStrArray;
- return tmpStr[0] == "(" && tmpStr[nAnz-1] == ")";
+ auto& tmp = NumFor[1].Info().sStrArray;
+ return tmp[0] == "(" && tmp[nAnz-1] == ")";
}
bool SvNumberformat::HasPositiveBracketPlaceholder() const
{
sal_uInt16 nAnz = NumFor[0].GetCount();
- OUString *tmpStr = NumFor[0].Info().sStrArray;
- return tmpStr[nAnz-1] == "_)";
+ return NumFor[0].Info().sStrArray[nAnz-1] == "_)";
}
DateOrder SvNumberformat::GetDateOrder() const
{
if ( (eType & css::util::NumberFormat::DATE) == css::util::NumberFormat::DATE )
{
- short const * const pType = NumFor[0].Info().nTypeArray;
+ auto& rTypeArray = NumFor[0].Info().nTypeArray;
sal_uInt16 nAnz = NumFor[0].GetCount();
for ( sal_uInt16 j=0; j<nAnz; j++ )
{
- switch ( pType[j] )
+ switch ( rTypeArray[j] )
{
case NF_KEY_D :
case NF_KEY_DD :
@@ -4785,12 +4770,12 @@ sal_uInt32 SvNumberformat::GetExactDateOrder() const
SAL_WARN( "svl.numbers", "SvNumberformat::GetExactDateOrder: no date" );
return nRet;
}
- short const * const pType = NumFor[0].Info().nTypeArray;
+ auto& rTypeArray = NumFor[0].Info().nTypeArray;
sal_uInt16 nAnz = NumFor[0].GetCount();
int nShift = 0;
for ( sal_uInt16 j=0; j<nAnz && nShift < 3; j++ )
{
- switch ( pType[j] )
+ switch ( rTypeArray[j] )
{
case NF_KEY_D :
case NF_KEY_DD :
@@ -5029,21 +5014,21 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords,
sal_uInt32 nCalendarID = 0x0000000; // Excel ID of calendar used in sub-format see tdf#36038
if ( nAnz )
{
- const short* pType = NumFor[n].Info().nTypeArray;
- const OUString* pStr = NumFor[n].Info().sStrArray;
+ auto& rTypeArray = NumFor[n].Info().nTypeArray;
+ auto& rStrArray = NumFor[n].Info().sStrArray;
for ( sal_uInt16 j=0; j<nAnz; j++ )
{
- if ( 0 <= pType[j] && pType[j] < NF_KEYWORD_ENTRIES_COUNT )
+ if ( 0 <= rTypeArray[j] && rTypeArray[j] < NF_KEYWORD_ENTRIES_COUNT )
{
- aStr.append( rKeywords[pType[j]] );
- if( NF_KEY_NNNN == pType[j] )
+ aStr.append( rKeywords[rTypeArray[j]] );
+ if( NF_KEY_NNNN == rTypeArray[j] )
{
aStr.append( rLocWrp.getLongDateDayOfWeekSep() );
}
}
else
{
- switch ( pType[j] )
+ switch ( rTypeArray[j] )
{
case NF_SYMBOLTYPE_DECSEP :
aStr.append( rLocWrp.getNumDecimalSep() );
@@ -5053,7 +5038,7 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords,
break;
case NF_SYMBOLTYPE_EXP :
aStr.append( rKeywords[NF_KEY_E] );
- if ( pStr[j].getLength() > 1 && pStr[j][1] == '+' )
+ if ( rStrArray[j].getLength() > 1 && rStrArray[j][1] == '+' )
aStr.append( "+" );
else
// tdf#102370: Excel code for exponent without sign
@@ -5070,33 +5055,33 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords,
break;
case NF_SYMBOLTYPE_FRACBLANK :
case NF_SYMBOLTYPE_STRING :
- if ( pStr[j].getLength() == 1 )
+ if ( rStrArray[j].getLength() == 1 )
{
- if ( pType[j] == NF_SYMBOLTYPE_STRING )
+ if ( rTypeArray[j] == NF_SYMBOLTYPE_STRING )
aStr.append( '\\' );
- aStr.append( pStr[j] );
+ aStr.append( rStrArray[j] );
}
else
{
aStr.append( '"' );
- aStr.append( pStr[j] );
+ aStr.append( rStrArray[j] );
aStr.append( '"' );
}
break;
case NF_SYMBOLTYPE_CALDEL :
- if ( pStr[j+1] == "gengou" )
+ if ( rStrArray[j+1] == "gengou" )
{
nCalendarID = 0x0030000;
}
- else if ( pStr[j+1] == "hijri" )
+ else if ( rStrArray[j+1] == "hijri" )
{
nCalendarID = 0x0060000;
}
- else if ( pStr[j+1] == "buddhist" )
+ else if ( rStrArray[j+1] == "buddhist" )
{
nCalendarID = 0x0070000;
}
- else if ( pStr[j+1] == "jewish" )
+ else if ( rStrArray[j+1] == "jewish" )
{
nCalendarID = 0x0080000;
}
@@ -5105,7 +5090,7 @@ OUString SvNumberformat::GetMappedFormatstring( const NfKeywordTable& rKeywords,
j = j+2;
break;
default:
- aStr.append( pStr[j] );
+ aStr.append( rStrArray[j] );
}
}
}
@@ -5443,10 +5428,10 @@ sal_uInt16 SvNumberformat::ImpGetNumForStringElementCount( sal_uInt16 nNumFor )
{
sal_uInt16 nCnt = 0;
sal_uInt16 nAnz = NumFor[nNumFor].GetCount();
- short const * const pType = NumFor[nNumFor].Info().nTypeArray;
+ auto& rTypeArray = NumFor[nNumFor].Info().nTypeArray;
for ( sal_uInt16 j=0; j<nAnz; ++j )
{
- switch ( pType[j] )
+ switch ( rTypeArray[j] )
{
case NF_SYMBOLTYPE_STRING:
case NF_SYMBOLTYPE_CURRENCY:
diff --git a/svtools/source/control/ctrltool.cxx b/svtools/source/control/ctrltool.cxx
index c4ab3de8dbcf..1586caf4959d 100644
--- a/svtools/source/control/ctrltool.cxx
+++ b/svtools/source/control/ctrltool.cxx
@@ -338,7 +338,6 @@ FontList::FontList(OutputDevice* pDevice, OutputDevice* pDevice2)
// initialise variables
mpDev = pDevice;
mpDev2 = pDevice2;
- mpSizeAry = nullptr;
// store style names
maLight = SvtResId(STR_SVT_STYLE_LIGHT);
@@ -368,9 +367,6 @@ FontList::FontList(OutputDevice* pDevice, OutputDevice* pDevice2)
FontList::~FontList()
{
- // delete SizeArray if required
- delete[] mpSizeAry;
-
// delete FontMetrics
ImplFontListFontMetric *pTemp, *pInfo;
for (auto const& it : m_Entries)
@@ -748,11 +744,7 @@ const FontMetric& FontList::GetFontMetric( sal_Handle hFontMetric )
const sal_IntPtr* FontList::GetSizeAry( const FontMetric& rInfo ) const
{
// first delete Size-Array
- if ( mpSizeAry )
- {
- delete[] const_cast<FontList*>(this)->mpSizeAry;
- const_cast<FontList*>(this)->mpSizeAry = nullptr;
- }
+ mpSizeAry.reset();
// use standard sizes if no name
if ( rInfo.GetFamilyName().isEmpty() )
@@ -775,21 +767,21 @@ const sal_IntPtr* FontList::GetSizeAry( const FontMetric& rInfo ) const
int nRealCount = 0;
long nOldHeight = 0;
- const_cast<FontList*>(this)->mpSizeAry = new sal_IntPtr[nDevSizeCount+1];
+ mpSizeAry.reset(new sal_IntPtr[nDevSizeCount+1] );
for (int i = 0; i < nDevSizeCount; ++i)
{
Size aSize = pDevice->GetDevFontSize( rInfo, i );
if ( aSize.Height() != nOldHeight )
{
nOldHeight = aSize.Height();
- const_cast<FontList*>(this)->mpSizeAry[nRealCount] = nOldHeight;
+ mpSizeAry[nRealCount] = nOldHeight;
nRealCount++;
}
}
- const_cast<FontList*>(this)->mpSizeAry[nRealCount] = 0;
+ mpSizeAry[nRealCount] = 0;
pDevice->SetMapMode( aOldMapMode );
- return mpSizeAry;
+ return mpSizeAry.get();
}
struct ImplFSNameItem
diff --git a/tools/source/inet/inetstrm.cxx b/tools/source/inet/inetstrm.cxx
index 156a24599190..73b3afc1e5ac 100644
--- a/tools/source/inet/inetstrm.cxx
+++ b/tools/source/inet/inetstrm.cxx
@@ -233,6 +233,7 @@ INetMIMEMessageStream::INetMIMEMessageStream(
INetMIMEMessage *pMsg, bool headerGenerated):
pSourceMsg(pMsg),
bHeaderGenerated(headerGenerated),
+ mvBuffer(BUFFER_SIZE),
pMsgStrm(nullptr),
pMsgRead(nullptr),
pMsgWrite(nullptr),
@@ -242,14 +243,12 @@ INetMIMEMessageStream::INetMIMEMessageStream(
{
assert(pMsg != nullptr);
maMsgBuffer.SetStreamCharSet(RTL_TEXTENCODING_ASCII_US);
- pBuffer = new sal_Char[BUFFER_SIZE];
- pRead = pWrite = pBuffer;
+ pRead = pWrite = mvBuffer.data();
}
INetMIMEMessageStream::~INetMIMEMessageStream()
{
delete pChildStrm;
- delete [] pBuffer;
delete pMsgStrm;
}
@@ -272,14 +271,14 @@ int INetMIMEMessageStream::Read(sal_Char* pData, sal_uIntPtr nSize)
else
{
// Buffer empty. Reset to <Begin-of-Buffer>.
- pRead = pWrite = pBuffer;
+ pRead = pWrite = mvBuffer.data();
// Read next message line.
- int nRead = GetMsgLine(pBuffer, BUFFER_SIZE);
+ int nRead = GetMsgLine(mvBuffer.data(), mvBuffer.size());
if (nRead > 0)
{
// Set read pointer.
- pRead = pBuffer + nRead;
+ pRead = mvBuffer.data() + nRead;
}
else
{
diff --git a/xmlhelp/source/cxxhelp/provider/databases.cxx b/xmlhelp/source/cxxhelp/provider/databases.cxx
index 407a9bd0c9b4..3fc71e0f87c1 100644
--- a/xmlhelp/source/cxxhelp/provider/databases.cxx
+++ b/xmlhelp/source/cxxhelp/provider/databases.cxx
@@ -127,8 +127,6 @@ Databases::Databases( bool showBasic,
Reference< uno::XComponentContext > const & xContext )
: m_xContext( xContext ),
m_bShowBasic(showBasic),
- m_nCustomCSSDocLength( 0 ),
- m_pCustomCSSDoc( nullptr ),
m_aCSS(styleSheet.toAsciiLowerCase()),
newProdName( "$[officename]" ),
newProdVersion( "$[officeversion]" ),
@@ -161,10 +159,6 @@ Databases::Databases( bool showBasic,
Databases::~Databases()
{
- // release stylesheet
-
- delete[] m_pCustomCSSDoc;
-
// unload the databases
{
@@ -945,15 +939,13 @@ Reference< XHierarchicalNameAccess > Databases::findJarFileForPath
void Databases::changeCSS(const OUString& newStyleSheet)
{
m_aCSS = newStyleSheet.toAsciiLowerCase();
- delete[] m_pCustomCSSDoc;
- m_pCustomCSSDoc = nullptr;
- m_nCustomCSSDocLength = 0;
+ m_vCustomCSSDoc.clear();
}
void Databases::cascadingStylesheet( const OUString& Language,
OStringBuffer& buffer )
{
- if( ! m_pCustomCSSDoc )
+ if( m_vCustomCSSDoc.empty() )
{
int retry = 2;
bool error = true;
@@ -1028,11 +1020,10 @@ void Databases::cascadingStylesheet( const OUString& Language,
{
sal_uInt64 nSize;
aFile.getSize( nSize );
- m_nCustomCSSDocLength = (int)nSize;
- m_pCustomCSSDoc = new char[ 1 + m_nCustomCSSDocLength ];
- m_pCustomCSSDoc[ m_nCustomCSSDocLength ] = 0;
- sal_uInt64 a = m_nCustomCSSDocLength,b = m_nCustomCSSDocLength;
- aFile.read( m_pCustomCSSDoc,a,b );
+ m_vCustomCSSDoc.resize( nSize + 1);
+ m_vCustomCSSDoc[nSize] = 0;
+ sal_uInt64 a = nSize,b = nSize;
+ aFile.read( m_vCustomCSSDoc.data(), a, b );
aFile.close();
error = false;
}
@@ -1049,12 +1040,12 @@ void Databases::cascadingStylesheet( const OUString& Language,
if( error )
{
- m_nCustomCSSDocLength = 0;
- m_pCustomCSSDoc = new char[ 1 ]; // Initialize with 1 to avoid gcc compiler warning
+ m_vCustomCSSDoc.clear();
}
}
- buffer.append( m_pCustomCSSDoc, m_nCustomCSSDocLength );
+ if (!m_vCustomCSSDoc.empty())
+ buffer.append( m_vCustomCSSDoc.data(), m_vCustomCSSDoc.size() - 1 );
}
void Databases::setActiveText( const OUString& Module,
diff --git a/xmlhelp/source/cxxhelp/provider/databases.hxx b/xmlhelp/source/cxxhelp/provider/databases.hxx
index 032a39d93848..9a6fd0296b49 100644
--- a/xmlhelp/source/cxxhelp/provider/databases.hxx
+++ b/xmlhelp/source/cxxhelp/provider/databases.hxx
@@ -235,8 +235,7 @@ namespace chelp {
bool m_bShowBasic;
- int m_nCustomCSSDocLength;
- char* m_pCustomCSSDoc;
+ std::vector<char> m_vCustomCSSDoc;
OUString m_aCSS;
enum {
diff --git a/xmlscript/source/xml_helper/xml_impctx.cxx b/xmlscript/source/xml_helper/xml_impctx.cxx
index 18c1666d7d4c..09ec1373cd0d 100644
--- a/xmlscript/source/xml_helper/xml_impctx.cxx
+++ b/xmlscript/source/xml_helper/xml_impctx.cxx
@@ -303,7 +303,7 @@ class ExtendedAttributes :
public ::cppu::WeakImplHelper< xml::input::XAttributes >
{
sal_Int32 m_nAttributes;
- sal_Int32 * m_pUids;
+ std::unique_ptr<sal_Int32[]> m_pUids;
OUString * m_pLocalNames;
OUString * m_pQNames;
OUString * m_pValues;
@@ -355,7 +355,6 @@ inline ExtendedAttributes::ExtendedAttributes(
ExtendedAttributes::~ExtendedAttributes() throw ()
{
- delete [] m_pUids;
delete [] m_pLocalNames;
delete [] m_pQNames;
delete [] m_pValues;