sc/inc/formulacell.hxx | 2 +- sc/source/core/data/colorscale.cxx | 6 +++--- sc/source/core/data/column3.cxx | 2 +- sc/source/core/data/conditio.cxx | 4 ++-- sc/source/core/data/formulacell.cxx | 36 ++++++++++++++++++------------------ sc/source/core/data/table4.cxx | 3 +-- 6 files changed, 26 insertions(+), 27 deletions(-)
New commits: commit 37095b7484b99a86ba81e5fb64aa5426a98e9183 Author: Caolán McNamara <caol...@redhat.com> AuthorDate: Mon Sep 14 10:27:21 2020 +0100 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Tue Sep 15 09:42:47 2020 +0200 StartListeningTo always dereferences its argument Change-Id: I4930ff5644d4ec184b4f55747d1a6b13a28bf49e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102660 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/sc/inc/formulacell.hxx b/sc/inc/formulacell.hxx index d57dda491d11..49d6ddb9b762 100644 --- a/sc/inc/formulacell.hxx +++ b/sc/inc/formulacell.hxx @@ -460,7 +460,7 @@ public: bool InterpretFormulaGroup(SCROW nStartOffset = -1, SCROW nEndOffset = -1); // nOnlyNames may be one or more of SC_LISTENING_NAMES_* - void StartListeningTo( ScDocument* pDoc ); + void StartListeningTo( ScDocument& rDoc ); void StartListeningTo( sc::StartListeningContext& rCxt ); void EndListeningTo( ScDocument* pDoc, ScTokenArray* pArr = nullptr, ScAddress aPos = ScAddress() ); diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx index 298d15d2cf51..deec68636033 100644 --- a/sc/source/core/data/colorscale.cxx +++ b/sc/source/core/data/colorscale.cxx @@ -174,7 +174,7 @@ ScColorScaleEntry::ScColorScaleEntry(const ScColorScaleEntry& rEntry): if(rEntry.mpCell) { mpCell.reset(new ScFormulaCell(*rEntry.mpCell, *rEntry.mpCell->GetDocument(), rEntry.mpCell->aPos, ScCloneFlags::NoMakeAbsExternal)); - mpCell->StartListeningTo( mpCell->GetDocument() ); + mpCell->StartListeningTo( *mpCell->GetDocument() ); mpListener.reset(new ScFormulaListener(mpCell.get())); } } @@ -190,7 +190,7 @@ ScColorScaleEntry::ScColorScaleEntry(ScDocument* pDoc, const ScColorScaleEntry& if(rEntry.mpCell) { mpCell.reset(new ScFormulaCell(*rEntry.mpCell, *rEntry.mpCell->GetDocument(), rEntry.mpCell->aPos, ScCloneFlags::NoMakeAbsExternal)); - mpCell->StartListeningTo( pDoc ); + mpCell->StartListeningTo( *pDoc ); mpListener.reset(new ScFormulaListener(mpCell.get())); if (mpFormat) mpListener->setCallback([&]() { mpFormat->DoRepaint();}); @@ -206,7 +206,7 @@ ScColorScaleEntry::~ScColorScaleEntry() COVERITY_NOEXCEPT_FALSE void ScColorScaleEntry::SetFormula( const OUString& rFormula, ScDocument* pDoc, const ScAddress& rAddr, formula::FormulaGrammar::Grammar eGrammar ) { mpCell.reset(new ScFormulaCell( pDoc, rAddr, rFormula, eGrammar )); - mpCell->StartListeningTo( pDoc ); + mpCell->StartListeningTo( *pDoc ); mpListener.reset(new ScFormulaListener(mpCell.get())); if (mpFormat) mpListener->setCallback([&]() { mpFormat->DoRepaint();}); diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index f37ab25d2c51..55a1f59575bd 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -644,7 +644,7 @@ void ScColumn::AttachNewFormulaCell( } break; case sc::SingleCellListening: - rCell.StartListeningTo(pDocument); + rCell.StartListeningTo(*pDocument); StartListeningUnshared( rNewSharedRows); break; case sc::NoListening: diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index a76cebed65f8..b3089a4053a2 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -400,7 +400,7 @@ void ScConditionEntry::MakeCells( const ScAddress& rPos ) // pFCell1 will hold a flat-copied ScTokenArray sharing ref-counted // code tokens with pFormula1 pFCell1.reset( new ScFormulaCell(mpDoc, rPos, *pFormula1) ); - pFCell1->StartListeningTo( mpDoc ); + pFCell1->StartListeningTo( *mpDoc ); } if ( pFormula2 && !pFCell2 && !bRelRef2 ) @@ -408,7 +408,7 @@ void ScConditionEntry::MakeCells( const ScAddress& rPos ) // pFCell2 will hold a flat-copied ScTokenArray sharing ref-counted // code tokens with pFormula2 pFCell2.reset( new ScFormulaCell(mpDoc, rPos, *pFormula2) ); - pFCell2->StartListeningTo( mpDoc ); + pFCell2->StartListeningTo( *mpDoc ); } } diff --git a/sc/source/core/data/formulacell.cxx b/sc/source/core/data/formulacell.cxx index a67dc496731a..1ea54895f4ee 100644 --- a/sc/source/core/data/formulacell.cxx +++ b/sc/source/core/data/formulacell.cxx @@ -928,7 +928,7 @@ ScFormulaCell::ScFormulaCell(const ScFormulaCell& rCell, ScDocument& rDoc, const } if( nCloneFlags & ScCloneFlags::StartListening ) - StartListeningTo( &rDoc ); + StartListeningTo( rDoc ); if (bSubTotal) pDocument->AddSubTotalCell(this); @@ -1221,7 +1221,7 @@ void ScFormulaCell::CompileTokenArray( bool bNoListening ) aResult.SetToken( nullptr); bCompile = false; if ( !bNoListening ) - StartListeningTo( pDocument ); + StartListeningTo( *pDocument ); } if ( bWasInFormulaTree ) pDocument->PutInFormulaTree( this ); @@ -1261,7 +1261,7 @@ void ScFormulaCell::CompileTokenArray( sc::CompileFormulaContext& rCxt, bool bNo aResult.SetToken( nullptr); bCompile = false; if ( !bNoListening ) - StartListeningTo( pDocument ); + StartListeningTo( *pDocument ); } if ( bWasInFormulaTree ) pDocument->PutInFormulaTree( this ); @@ -1276,7 +1276,7 @@ void ScFormulaCell::CompileXML( sc::CompileFormulaContext& rCxt, ScProgress& rPr if ( cMatrixFlag == ScMatrixMode::Reference ) { // is already token code via ScDocFunc::EnterMatrix, ScDocument::InsertMatrixFormula // just establish listeners - StartListeningTo( pDocument ); + StartListeningTo( *pDocument ); return ; } @@ -1443,7 +1443,7 @@ void ScFormulaCell::CalcAfterLoad( sc::CompileFormulaContext& rCxt, bool bStartL if( !bNewCompiled || pCode->GetCodeError() == FormulaError::NONE ) { if (bStartListening) - StartListeningTo(pDocument); + StartListeningTo(*pDocument); if( !pCode->IsRecalcModeNormal() ) bDirty = true; @@ -2311,7 +2311,7 @@ void ScFormulaCell::InterpretTail( ScInterpreterContext& rContext, ScInterpretTa // The formula contains a volatile macro. pCode->SetExclusiveRecalcModeAlways(); pDocument->PutInFormulaTree(this); - StartListeningTo(pDocument); + StartListeningTo(*pDocument); break; case ScInterpreter::NOT_VOLATILE: if (pCode->IsRecalcModeAlways()) @@ -2364,7 +2364,7 @@ void ScFormulaCell::HandleStuffAfterParallelCalculation(ScInterpreter* pInterpre // The formula contains a volatile macro. pCode->SetExclusiveRecalcModeAlways(); pDocument->PutInFormulaTree(this); - StartListeningTo(pDocument); + StartListeningTo(*pDocument); break; case ScInterpreter::NOT_VOLATILE: if (pCode->IsRecalcModeAlways()) @@ -2460,7 +2460,7 @@ void ScFormulaCell::Notify( const SfxHint& rHint ) break; case sc::RefHint::StartListening: { - StartListeningTo( pDocument); + StartListeningTo(*pDocument); } break; case sc::RefHint::StopListening: @@ -3493,7 +3493,7 @@ bool ScFormulaCell::UpdateReferenceOnMove( // InsertCol/InsertRow if ( bNewListening ) { - StartListeningTo( pDocument ); + StartListeningTo( *pDocument ); } } @@ -3863,7 +3863,7 @@ void ScFormulaCell::UpdateTranspose( const ScRange& rSource, const ScAddress& rD SetDirty(); } else - StartListeningTo( pDocument ); // Listener as previous + StartListeningTo( *pDocument ); // Listener as previous } void ScFormulaCell::UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY ) @@ -3904,7 +3904,7 @@ void ScFormulaCell::UpdateGrow( const ScRange& rArea, SCCOL nGrowX, SCROW nGrowY SetDirty(); } else - StartListeningTo( pDocument ); // Listener as previous + StartListeningTo( *pDocument ); // Listener as previous } // See also ScDocument::FindRangeNamesReferencingSheet() @@ -5243,20 +5243,20 @@ void startListeningArea( } -void ScFormulaCell::StartListeningTo( ScDocument* pDoc ) +void ScFormulaCell::StartListeningTo( ScDocument& rDoc ) { if (mxGroup) - mxGroup->endAllGroupListening(*pDoc); + mxGroup->endAllGroupListening(rDoc); - if (pDoc->IsClipOrUndo() || pDoc->GetNoListening() || IsInChangeTrack()) + if (rDoc.IsClipOrUndo() || rDoc.GetNoListening() || IsInChangeTrack()) return; - pDoc->SetDetectiveDirty(true); // It has changed something + rDoc.SetDetectiveDirty(true); // It has changed something ScTokenArray* pArr = GetCode(); if( pArr->IsRecalcModeAlways() ) { - pDoc->StartListeningArea(BCA_LISTEN_ALWAYS, false, this); + rDoc.StartListeningArea(BCA_LISTEN_ALWAYS, false, this); SetNeedsListening( false); return; } @@ -5271,11 +5271,11 @@ void ScFormulaCell::StartListeningTo( ScDocument* pDoc ) { ScAddress aCell = t->GetSingleRef()->toAbs(*pDocument, aPos); if (aCell.IsValid()) - pDoc->StartListeningCell(aCell, this); + rDoc.StartListeningCell(aCell, this); } break; case svDoubleRef: - startListeningArea(this, *pDoc, aPos, *t); + startListeningArea(this, rDoc, aPos, *t); break; default: ; // nothing diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx index 69a63c981201..ff70ede09653 100644 --- a/sc/source/core/data/table4.cxx +++ b/sc/source/core/data/table4.cxx @@ -508,8 +508,7 @@ void ScTable::FillFormula( } } pDocument->SetNoListening( false ); - pDestCell->StartListeningTo( pDocument ); - + pDestCell->StartListeningTo( *pDocument ); } void ScTable::FillAuto( SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2, _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits