sw/source/core/doc/DocumentFieldsManager.cxx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
New commits: commit 7f4b53b1c7c192ecfef35913133239b670070062 Author: Bjoern Michaelsen <bjoern.michael...@libreoffice.org> AuthorDate: Mon Mar 20 00:07:49 2023 +0100 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Wed Mar 22 10:58:54 2023 +0000 UpdateTableFields: stronger assertions - And use {Static,Dynamic}WhichCast where possible Change-Id: Ie5097d360ddb0a5cd9980392a9106b9586861001 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/149121 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx index 3503ba053e68..a395dc352392 100644 --- a/sw/source/core/doc/DocumentFieldsManager.cxx +++ b/sw/source/core/doc/DocumentFieldsManager.cxx @@ -598,12 +598,11 @@ void DocumentFieldsManager::UpdateRefFields() void DocumentFieldsManager::UpdateTableFields( SfxPoolItem* pHt ) { - OSL_ENSURE( !pHt || RES_TABLEFML_UPDATE == pHt->Which(), - "What MessageItem is this?" ); SwTableFormulaUpdate* pUpdateField = nullptr; if(pHt && RES_TABLEFML_UPDATE == pHt->Which()) pUpdateField = static_cast<SwTableFormulaUpdate*>(pHt); - assert(!pUpdateField || pUpdateField->m_eFlags != TBL_BOXPTR); // use SwTable::SwitchFormulasToInternalRepresentation + assert(!pHt || pUpdateField); + assert(!pUpdateField || pUpdateField->m_eFlags == TBL_CALC || pUpdateField->m_eFlags == TBL_SPLITTBL || pUpdateField->m_eFlags == TBL_MERGETBL); auto pFieldType = GetFieldType( SwFieldIds::Table, OUString(), false ); if(pFieldType && (!pUpdateField || pUpdateField->m_eFlags == TBL_CALC)) { @@ -640,7 +639,7 @@ void DocumentFieldsManager::UpdateTableFields( SfxPoolItem* pHt ) } // all fields/boxes are now invalid, so we can start to calculate - if(pHt && ( RES_TABLEFML_UPDATE != pHt->Which() || TBL_CALC != static_cast<SwTableFormulaUpdate*>(pHt)->m_eFlags)) + if(pHt && pUpdateField->m_eFlags != TBL_CALC) return; std::optional<SwCalc> oCalc; @@ -730,7 +729,7 @@ void DocumentFieldsManager::UpdateTableFields( SfxPoolItem* pHt ) // calculate the formula at the boxes for (const SfxPoolItem* pItem : m_rDoc.GetAttrPool().GetItemSurrogates(RES_BOXATR_FORMULA)) { - auto pFormula = const_cast<SwTableBoxFormula*>(dynamic_cast<const SwTableBoxFormula*>(pItem)); + auto pFormula = const_cast<SwTableBoxFormula*>(pItem->DynamicWhichCast(RES_BOXATR_FORMULA)); if(!pFormula || !pFormula->GetDefinedIn() || pFormula->IsValid()) continue; SwTableBox* pBox = pFormula->GetTableBox();