Kaydet (Commit) 50887c90 authored tarafından Noel Grandin's avatar Noel Grandin

use unique_ptr in ScRangeUtil::IsAbsTabArea

Change-Id: I3a5f88eef1e7a8241921f2fed15a1ebc2c4c3445
Reviewed-on: https://gerrit.libreoffice.org/66006
Tested-by: Jenkins
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 6d859495
...@@ -51,7 +51,7 @@ public: ...@@ -51,7 +51,7 @@ public:
static bool IsAbsTabArea ( const OUString& rAreaStr, static bool IsAbsTabArea ( const OUString& rAreaStr,
const ScDocument* pDoc, const ScDocument* pDoc,
ScArea*** pppAreas, std::unique_ptr<ScArea[]>* ppAreas,
sal_uInt16* pAreaCount, sal_uInt16* pAreaCount,
bool bAcceptCellRef = false, bool bAcceptCellRef = false,
ScAddress::Details const & rDetails = ScAddress::detailsOOOa1 ); ScAddress::Details const & rDetails = ScAddress::detailsOOOa1 );
......
...@@ -86,7 +86,7 @@ void ScRangeUtil::CutPosString( const OUString& theAreaStr, ...@@ -86,7 +86,7 @@ void ScRangeUtil::CutPosString( const OUString& theAreaStr,
bool ScRangeUtil::IsAbsTabArea( const OUString& rAreaStr, bool ScRangeUtil::IsAbsTabArea( const OUString& rAreaStr,
const ScDocument* pDoc, const ScDocument* pDoc,
ScArea*** pppAreas, std::unique_ptr<ScArea[]>* ppAreas,
sal_uInt16* pAreaCount, sal_uInt16* pAreaCount,
bool /* bAcceptCellRef */, bool /* bAcceptCellRef */,
ScAddress::Details const & rDetails ) ScAddress::Details const & rDetails )
...@@ -143,12 +143,12 @@ bool ScRangeUtil::IsAbsTabArea( const OUString& rAreaStr, ...@@ -143,12 +143,12 @@ bool ScRangeUtil::IsAbsTabArea( const OUString& rAreaStr,
bStrOk = true; bStrOk = true;
if ( pppAreas && pAreaCount ) // Array returned ? if ( ppAreas && pAreaCount ) // Array returned ?
{ {
SCTAB nStartTab = aStartPos.Tab(); SCTAB nStartTab = aStartPos.Tab();
SCTAB nEndTab = aEndPos.Tab(); SCTAB nEndTab = aEndPos.Tab();
sal_uInt16 nTabCount = static_cast<sal_uInt16>(nEndTab-nStartTab+1); sal_uInt16 nTabCount = static_cast<sal_uInt16>(nEndTab-nStartTab+1);
ScArea** theAreas = new ScArea*[nTabCount]; ppAreas->reset(new ScArea[nTabCount]);
SCTAB nTab = 0; SCTAB nTab = 0;
sal_uInt16 i = 0; sal_uInt16 i = 0;
ScArea theArea( 0, aStartPos.Col(), aStartPos.Row(), ScArea theArea( 0, aStartPos.Col(), aStartPos.Row(),
...@@ -157,11 +157,10 @@ bool ScRangeUtil::IsAbsTabArea( const OUString& rAreaStr, ...@@ -157,11 +157,10 @@ bool ScRangeUtil::IsAbsTabArea( const OUString& rAreaStr,
nTab = nStartTab; nTab = nStartTab;
for ( i=0; i<nTabCount; i++ ) for ( i=0; i<nTabCount; i++ )
{ {
theAreas[i] = new ScArea( theArea ); (*ppAreas)[i] = theArea;
theAreas[i]->nTab = nTab; (*ppAreas)[i].nTab = nTab;
nTab++; nTab++;
} }
*pppAreas = theAreas;
*pAreaCount = nTabCount; *pAreaCount = nTabCount;
} }
} }
......
...@@ -426,7 +426,7 @@ IMPL_LINK( ScConsolidateDlg, ClickHdl, Button*, pBtn, void ) ...@@ -426,7 +426,7 @@ IMPL_LINK( ScConsolidateDlg, ClickHdl, Button*, pBtn, void )
if ( !pEdDataArea->GetText().isEmpty() ) if ( !pEdDataArea->GetText().isEmpty() )
{ {
OUString aNewEntry( pEdDataArea->GetText() ); OUString aNewEntry( pEdDataArea->GetText() );
ScArea** ppAreas = nullptr; std::unique_ptr<ScArea[]> ppAreas;
sal_uInt16 nAreaCount = 0; sal_uInt16 nAreaCount = 0;
const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention(); const formula::FormulaGrammar::AddressConvention eConv = pDoc->GetAddressConvention();
...@@ -438,24 +438,17 @@ IMPL_LINK( ScConsolidateDlg, ClickHdl, Button*, pBtn, void ) ...@@ -438,24 +438,17 @@ IMPL_LINK( ScConsolidateDlg, ClickHdl, Button*, pBtn, void )
for ( sal_uInt16 i=0; i<nAreaCount; i++ ) for ( sal_uInt16 i=0; i<nAreaCount; i++ )
{ {
OUString aNewArea; const ScArea& rArea = ppAreas[i];
OUString aNewArea = ScRange( rArea.nColStart, rArea.nRowStart, rArea.nTab,
rArea.nColEnd, rArea.nRowEnd, rArea.nTab
).Format(ScRefFlags::RANGE_ABS_3D, pDoc, eConv);
if ( ppAreas[i] ) if ( pLbConsAreas->GetEntryPos( aNewArea )
== LISTBOX_ENTRY_NOTFOUND )
{ {
const ScArea& rArea = *(ppAreas[i]); pLbConsAreas->InsertEntry( aNewArea );
aNewArea = ScRange( rArea.nColStart, rArea.nRowStart, rArea.nTab,
rArea.nColEnd, rArea.nRowEnd, rArea.nTab
).Format(ScRefFlags::RANGE_ABS_3D, pDoc, eConv);
if ( pLbConsAreas->GetEntryPos( aNewArea )
== LISTBOX_ENTRY_NOTFOUND )
{
pLbConsAreas->InsertEntry( aNewArea );
}
delete ppAreas[i];
} }
} }
delete [] ppAreas;
} }
else if ( VerifyEdit( pEdDataArea ) ) else if ( VerifyEdit( pEdDataArea ) )
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment