sc/source/core/tool/interpr4.cxx |   43 +++++++++++++++++++--------------------
 1 file changed, 21 insertions(+), 22 deletions(-)

New commits:
commit 5393dbec555b89aa649a6ece3a58ec38538d398c
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Sun May 8 13:09:59 2022 +0100
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Sun May 8 17:51:52 2022 +0200

    No need to use std::optional here
    
    Change-Id: I7129178ca4639aafabe7401dd6e3dc831e7e9562
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133873
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>

diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index a104f3be34c4..658cc2b5f9fd 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -3568,26 +3568,26 @@ void ScInterpreter::ScTableOp()
         PushIllegalParameter();
         return;
     }
-    std::optional<ScInterpreterTableOpParams> pTableOp(std::in_place);
+    ScInterpreterTableOpParams aTableOp;
     if (nParamCount == 5)
     {
-        PopSingleRef( pTableOp->aNew2 );
-        PopSingleRef( pTableOp->aOld2 );
+        PopSingleRef( aTableOp.aNew2 );
+        PopSingleRef( aTableOp.aOld2 );
     }
-    PopSingleRef( pTableOp->aNew1 );
-    PopSingleRef( pTableOp->aOld1 );
-    PopSingleRef( pTableOp->aFormulaPos );
+    PopSingleRef( aTableOp.aNew1 );
+    PopSingleRef( aTableOp.aOld1 );
+    PopSingleRef( aTableOp.aFormulaPos );
 
-    pTableOp->bValid = true;
-    mrDoc.m_TableOpList.push_back(&*pTableOp);
+    aTableOp.bValid = true;
+    mrDoc.m_TableOpList.push_back(&aTableOp);
     mrDoc.IncInterpreterTableOpLevel();
 
-    bool bReuseLastParams = (mrDoc.aLastTableOpParams == *pTableOp);
+    bool bReuseLastParams = (mrDoc.aLastTableOpParams == aTableOp);
     if ( bReuseLastParams )
     {
-        pTableOp->aNotifiedFormulaPos = 
mrDoc.aLastTableOpParams.aNotifiedFormulaPos;
-        pTableOp->bRefresh = true;
-        for ( const auto& rPos : pTableOp->aNotifiedFormulaPos )
+        aTableOp.aNotifiedFormulaPos = 
mrDoc.aLastTableOpParams.aNotifiedFormulaPos;
+        aTableOp.bRefresh = true;
+        for ( const auto& rPos : aTableOp.aNotifiedFormulaPos )
         {   // emulate broadcast and indirectly collect cell pointers
             ScRefCellValue aCell(mrDoc, rPos);
             if (aCell.meType == CELLTYPE_FORMULA)
@@ -3596,18 +3596,18 @@ void ScInterpreter::ScTableOp()
     }
     else
     {   // broadcast and indirectly collect cell pointers and positions
-        mrDoc.SetTableOpDirty( pTableOp->aOld1 );
+        mrDoc.SetTableOpDirty( aTableOp.aOld1 );
         if ( nParamCount == 5 )
-            mrDoc.SetTableOpDirty( pTableOp->aOld2 );
+            mrDoc.SetTableOpDirty( aTableOp.aOld2 );
     }
-    pTableOp->bCollectNotifications = false;
+    aTableOp.bCollectNotifications = false;
 
-    ScRefCellValue aCell(mrDoc, pTableOp->aFormulaPos);
+    ScRefCellValue aCell(mrDoc, aTableOp.aFormulaPos);
     if (aCell.meType == CELLTYPE_FORMULA)
         aCell.mpFormula->SetDirtyVar();
     if (aCell.hasNumeric())
     {
-        PushDouble(GetCellValue(pTableOp->aFormulaPos, aCell));
+        PushDouble(GetCellValue(aTableOp.aFormulaPos, aCell));
     }
     else
     {
@@ -3617,21 +3617,21 @@ void ScInterpreter::ScTableOp()
     }
 
     auto const itr =
-        ::std::find(mrDoc.m_TableOpList.begin(), mrDoc.m_TableOpList.end(), 
&*pTableOp);
+        ::std::find(mrDoc.m_TableOpList.begin(), mrDoc.m_TableOpList.end(), 
&aTableOp);
     if (itr != mrDoc.m_TableOpList.end())
     {
         mrDoc.m_TableOpList.erase(itr);
     }
 
     // set dirty again once more to be able to recalculate original
-    for ( const auto& pCell : pTableOp->aNotifiedFormulaCells )
+    for ( const auto& pCell : aTableOp.aNotifiedFormulaCells )
     {
         pCell->SetTableOpDirty();
     }
 
     // save these params for next incarnation
     if ( !bReuseLastParams )
-        mrDoc.aLastTableOpParams = *pTableOp;
+        mrDoc.aLastTableOpParams = aTableOp;
 
     if (aCell.meType == CELLTYPE_FORMULA)
     {
@@ -3642,11 +3642,10 @@ void ScInterpreter::ScTableOp()
     // Reset all dirty flags so next incarnation does really collect all cell
     // pointers during notifications and not just non-dirty ones, which may
     // happen if a formula cell is used by more than one TableOp block.
-    for ( const auto& pCell : pTableOp->aNotifiedFormulaCells )
+    for ( const auto& pCell : aTableOp.aNotifiedFormulaCells )
     {
         pCell->ResetTableOpDirtyVar();
     }
-    pTableOp.reset();
 
     mrDoc.DecInterpreterTableOpLevel();
 }

Reply via email to