[Libreoffice-commits] core.git: sw/source

Michael Stahl mstahl at redhat.com
Tue Nov 29 09:49:37 UTC 2016


 sw/source/core/doc/DocumentFieldsManager.cxx |    7 ++++---
 sw/source/core/doc/doctxm.cxx                |   20 ++++++++++++--------
 sw/source/core/docnode/ndtbl.cxx             |   14 ++++++++------
 sw/source/core/docnode/swbaslnk.cxx          |    7 ++++---
 sw/source/core/edit/autofmt.cxx              |    9 ++++-----
 sw/source/core/edit/edlingu.cxx              |   26 ++++++++++++++------------
 sw/source/core/frmedt/fecopy.cxx             |   12 ++++++------
 sw/source/core/layout/paintfrm.cxx           |    5 +++--
 sw/source/core/text/txtfrm.cxx               |   12 +++++++++---
 sw/source/core/txtnode/txtedt.cxx            |    2 +-
 10 files changed, 65 insertions(+), 49 deletions(-)

New commits:
commit 199e687c12de402f51f86c6b81bb9bdcd514337c
Author: Michael Stahl <mstahl at redhat.com>
Date:   Mon Nov 28 15:06:46 2016 +0100

    sw core: de-obfuscate assignments in conditions to help GCC
    
    GCC 6.2.1 with -Og produces spurious -Werror=maybe-uninitialized
    on variables that are assigned in conditions; perhaps it's better to
    de-obfuscate the code if even GCC is confused about it.
    
    Change-Id: Ib42290abd0e45158900b3d42e1b666fa4d0fa7f3
    Reviewed-on: https://gerrit.libreoffice.org/31330
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Michael Stahl <mstahl at redhat.com>

diff --git a/sw/source/core/doc/DocumentFieldsManager.cxx b/sw/source/core/doc/DocumentFieldsManager.cxx
index 49fef17..1053a9c 100644
--- a/sw/source/core/doc/DocumentFieldsManager.cxx
+++ b/sw/source/core/doc/DocumentFieldsManager.cxx
@@ -670,9 +670,10 @@ void DocumentFieldsManager::UpdateTableFields( SfxPoolItem* pHt )
                 // new fields are inserted at the beginning of the modify chain
                 // that gives faster calculation on import
                 // mba: do we really need &m_rDoc "optimization"? Is it still valid?
-                SwTableField* pField;
-                if( !pFormatField->GetTextField() || (nsSwExtendedSubType::SUB_CMD &
-                    (pField = static_cast<SwTableField*>(pFormatField->GetField()))->GetSubType() ))
+                if (!pFormatField->GetTextField())
+                    continue;
+                SwTableField *const pField(static_cast<SwTableField*>(pFormatField->GetField()));
+                if (nsSwExtendedSubType::SUB_CMD & pField->GetSubType())
                     continue;
 
                 // needs to be recalculated
diff --git a/sw/source/core/doc/doctxm.cxx b/sw/source/core/doc/doctxm.cxx
index b3462b7..87d1c60 100644
--- a/sw/source/core/doc/doctxm.cxx
+++ b/sw/source/core/doc/doctxm.cxx
@@ -734,9 +734,13 @@ bool SwTOXBaseSection::SetPosAtStartEnd( SwPosition& rPos ) const
 void SwTOXBaseSection::Update(const SfxItemSet* pAttr,
                               const bool        _bNewTOX )
 {
-    const SwSectionNode* pSectNd;
-    if( !SwTOXBase::GetRegisteredIn()->HasWriterListeners() ||
-        !GetFormat() || nullptr == (pSectNd = GetFormat()->GetSectionNode() ) ||
+    if (!SwTOXBase::GetRegisteredIn()->HasWriterListeners() ||
+        !GetFormat())
+    {
+        return;
+    }
+    SwSectionNode const*const pSectNd(GetFormat()->GetSectionNode());
+    if (nullptr == pSectNd ||
         !pSectNd->GetNodes().IsDocNodes() ||
         IsHiddenFlag() )
     {
@@ -1119,15 +1123,15 @@ void SwTOXBaseSection::UpdateMarks( const SwTOXInternational& rIntl,
     TOXTypes eTOXTyp = GetTOXType()->GetType();
     SwIterator<SwTOXMark,SwTOXType> aIter( *pType );
 
-    SwTextTOXMark* pTextMark;
-    SwTOXMark* pMark;
-    for( pMark = aIter.First(); pMark; pMark = aIter.Next() )
+    for (SwTOXMark* pMark = aIter.First(); pMark; pMark = aIter.Next())
     {
         ::SetProgressState( 0, pDoc->GetDocShell() );
 
-        if( pMark->GetTOXType()->GetType() == eTOXTyp &&
-            nullptr != ( pTextMark = pMark->GetTextTOXMark() ) )
+        if (pMark->GetTOXType()->GetType() == eTOXTyp)
         {
+            SwTextTOXMark *const pTextMark(pMark->GetTextTOXMark());
+            if (nullptr == pTextMark)
+                continue;
             const SwTextNode* pTOXSrc = pTextMark->GetpTextNd();
             // Only insert TOXMarks from the Doc, not from the
             // UNDO.
diff --git a/sw/source/core/docnode/ndtbl.cxx b/sw/source/core/docnode/ndtbl.cxx
index da7d011..f3604c1 100644
--- a/sw/source/core/docnode/ndtbl.cxx
+++ b/sw/source/core/docnode/ndtbl.cxx
@@ -1531,9 +1531,10 @@ static void lcl_DelBox( SwTableBox* pBox, DelTabPara* pDelPara )
                             *pBox->GetSttNd()->EndOfSectionNode() );
         // Delete the Section
         pDelPara->rNds.SectionUp( &aDelRg );
-        const SwTextNode* pCurTextNd;
-        if( T2T_PARA != pDelPara->cCh && pDelPara->pLastNd &&
-            nullptr != ( pCurTextNd = aDelRg.aStart.GetNode().GetTextNode() ))
+        const SwTextNode* pCurTextNd = nullptr;
+        if (T2T_PARA != pDelPara->cCh && pDelPara->pLastNd)
+            pCurTextNd = aDelRg.aStart.GetNode().GetTextNode();
+        if (nullptr != pCurTextNd)
         {
             // Join the current text node with the last from the previous box if possible
             sal_uLong nNdIdx = aDelRg.aStart.GetIndex();
@@ -1579,9 +1580,10 @@ bool SwNodes::TableToText( const SwNodeRange& rRange, sal_Unicode cCh,
                             SwUndoTableToText* pUndo )
 {
     // Is a Table selected?
-    SwTableNode* pTableNd;
-    if( rRange.aStart.GetIndex() >= rRange.aEnd.GetIndex() ||
-        nullptr == ( pTableNd = rRange.aStart.GetNode().GetTableNode()) ||
+    if (rRange.aStart.GetIndex() >= rRange.aEnd.GetIndex())
+        return false;
+    SwTableNode *const pTableNd(rRange.aStart.GetNode().GetTableNode());
+    if (nullptr == pTableNd ||
         &rRange.aEnd.GetNode() != pTableNd->EndOfSectionNode() )
         return false;
 
diff --git a/sw/source/core/docnode/swbaslnk.cxx b/sw/source/core/docnode/swbaslnk.cxx
index 3e0c93af..8602ef9 100644
--- a/sw/source/core/docnode/swbaslnk.cxx
+++ b/sw/source/core/docnode/swbaslnk.cxx
@@ -300,9 +300,10 @@ static bool SetGrfFlySize( const Size& rGrfSz, SwGrfNode* pGrfNd, const Size& rO
     if ( !(aSz.Width() && aSz.Height()) &&
             rGrfSz.Width() && rGrfSz.Height() )
     {
-        SwFrameFormat* pFormat;
-        if( pGrfNd->IsChgTwipSize() &&
-            nullptr != (pFormat = pGrfNd->GetFlyFormat()) )
+        SwFrameFormat* pFormat = nullptr;
+        if (pGrfNd->IsChgTwipSize())
+            pFormat = pGrfNd->GetFlyFormat();
+        if (nullptr != pFormat)
         {
             Size aCalcSz( aSz );
             if ( !aSz.Height() && aSz.Width() )
diff --git a/sw/source/core/edit/autofmt.cxx b/sw/source/core/edit/autofmt.cxx
index 1109e5d..7ed1013 100644
--- a/sw/source/core/edit/autofmt.cxx
+++ b/sw/source/core/edit/autofmt.cxx
@@ -1420,11 +1420,10 @@ void SwAutoFormat::BuildEnum( sal_uInt16 nLvl, sal_uInt16 nDigitLevel )
     // replace bullet character with defined one
     const OUString& rStr = m_pCurTextNd->GetText();
     sal_Int32 nTextStt = 0;
-    const sal_Unicode* pFndBulletChr;
-    if( m_aFlags.bChgEnumNum &&
-        2 < rStr.getLength() &&
-        nullptr != ( pFndBulletChr = StrChr( pBulletChar, rStr[ nTextStt ] ))
-        && IsSpace( rStr[ nTextStt + 1 ] ) )
+    const sal_Unicode* pFndBulletChr = nullptr;
+    if (m_aFlags.bChgEnumNum && 2 < rStr.getLength())
+        pFndBulletChr = StrChr(pBulletChar, rStr[nTextStt]);
+    if (nullptr != pFndBulletChr && IsSpace(rStr[nTextStt + 1]))
     {
         if( m_aFlags.bAFormatByInput )
         {
diff --git a/sw/source/core/edit/edlingu.cxx b/sw/source/core/edit/edlingu.cxx
index bbb479f..b1c7e17 100644
--- a/sw/source/core/edit/edlingu.cxx
+++ b/sw/source/core/edit/edlingu.cxx
@@ -849,12 +849,13 @@ uno::Reference< XSpellAlternatives >
     SwPosition aPos( *pCursor->GetPoint() );
      Point aPt( *pPt );
     SwCursorMoveState eTmpState( MV_SETONLYTEXT );
-    SwTextNode *pNode;
-    SwWrongList *pWrong;
-    if( GetLayout()->GetCursorOfst( &aPos, aPt, &eTmpState ) &&
-        nullptr != (pNode = aPos.nNode.GetNode().GetTextNode()) &&
-        nullptr != (pWrong = pNode->GetWrong()) &&
-        !pNode->IsInProtectSect() )
+    SwTextNode *pNode = nullptr;
+    SwWrongList *pWrong = nullptr;
+    if (GetLayout()->GetCursorOfst( &aPos, aPt, &eTmpState ))
+        pNode = aPos.nNode.GetNode().GetTextNode();
+    if (nullptr != pNode)
+        pWrong = pNode->GetWrong();
+    if (nullptr != pWrong && !pNode->IsInProtectSect())
     {
         sal_Int32 nBegin = aPos.nContent.GetIndex();
         sal_Int32 nLen = 1;
@@ -960,12 +961,13 @@ bool SwEditShell::GetGrammarCorrection(
     SwPosition aPos( *pCursor->GetPoint() );
     Point aPt( *pPt );
     SwCursorMoveState eTmpState( MV_SETONLYTEXT );
-    SwTextNode *pNode;
-    SwGrammarMarkUp *pWrong;
-    if( GetLayout()->GetCursorOfst( &aPos, aPt, &eTmpState ) &&
-        nullptr != (pNode = aPos.nNode.GetNode().GetTextNode()) &&
-        nullptr != (pWrong = pNode->GetGrammarCheck()) &&
-        !pNode->IsInProtectSect() )
+    SwTextNode *pNode = nullptr;
+    SwGrammarMarkUp *pWrong = nullptr;
+    if (GetLayout()->GetCursorOfst( &aPos, aPt, &eTmpState ))
+        pNode = aPos.nNode.GetNode().GetTextNode();
+    if (nullptr != pNode)
+        pWrong = pNode->GetGrammarCheck();
+    if (nullptr != pWrong && !pNode->IsInProtectSect())
     {
         sal_Int32 nBegin = aPos.nContent.GetIndex();
         sal_Int32 nLen = 1;
diff --git a/sw/source/core/frmedt/fecopy.cxx b/sw/source/core/frmedt/fecopy.cxx
index 330c677..419c147 100644
--- a/sw/source/core/frmedt/fecopy.cxx
+++ b/sw/source/core/frmedt/fecopy.cxx
@@ -580,11 +580,11 @@ bool SwFEShell::Copy( SwFEShell* pDestShell, const Point& rSttPt,
         // Sizes will be corrected by percentage.
 
         // find boxes via the layout
-        const SwTableNode* pTableNd;
         SwSelBoxes aBoxes;
         GetTableSel( *this, aBoxes );
-        if( !aBoxes.empty() &&
-            nullptr != (pTableNd = aBoxes[0]->GetSttNd()->FindTableNode()) )
+        SwTableNode const*const pTableNd(
+            aBoxes.empty() ? nullptr : aBoxes[0]->GetSttNd()->FindTableNode());
+        if (nullptr != pTableNd)
         {
             SwPosition* pDstPos = nullptr;
             if( this == pDestShell )
@@ -696,7 +696,7 @@ bool SwFEShell::Paste( SwDoc* pClpDoc )
     // (individual boxes in the area are retrieved via the layout)
     SwFieldType* pTableFieldTyp = GetDoc()->getIDocumentFieldsAccess().GetSysFieldType( RES_TABLEFLD );
 
-    SwTableNode *pDestNd, *pSrcNd = aCpyPam.GetNode().GetTableNode();
+    SwTableNode *const pSrcNd = aCpyPam.GetNode().GetTableNode();
     if( !pSrcNd )                               // TabellenNode ?
     {                                           // nicht ueberspringen!!
         SwContentNode* pCNd = aCpyPam.GetNode().GetContentNode();
@@ -830,8 +830,8 @@ bool SwFEShell::Paste( SwDoc* pClpDoc )
         for(SwPaM& rPaM : GetCursor()->GetRingContainer())
         {
 
-            if( pSrcNd &&
-                nullptr != ( pDestNd = GetDoc()->IsIdxInTable( rPaM.GetPoint()->nNode )) &&
+            SwTableNode *const pDestNd(GetDoc()->IsIdxInTable(rPaM.GetPoint()->nNode));
+            if (pSrcNd && nullptr != pDestNd &&
                 // are we at the beginning of the cell? (if not, we will insert a nested table)
                 // first paragraph of the cell?
                 rPaM.GetNode().GetIndex() == rPaM.GetNode().FindTableBoxStartNode()->GetIndex()+1 &&
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index 1509b74..b73b625 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -7634,8 +7634,9 @@ Graphic SwFlyFrameFormat::MakeGraphic( ImageMap* pMap )
     //search any Fly!
     SwIterator<SwFrame,SwFormat> aIter( *this );
     SwFrame *pFirst = aIter.First();
-    SwViewShell *pSh;
-    if ( pFirst && nullptr != ( pSh = pFirst->getRootFrame()->GetCurrShell()) )
+    SwViewShell *const pSh =
+        (pFirst) ? pFirst->getRootFrame()->GetCurrShell() : nullptr;
+    if (nullptr != pSh)
     {
         SwViewShell *pOldGlobal = gProp.pSGlobalShell;
         gProp.pSGlobalShell = pSh;
diff --git a/sw/source/core/text/txtfrm.cxx b/sw/source/core/text/txtfrm.cxx
index 217f449..f1d5677 100644
--- a/sw/source/core/text/txtfrm.cxx
+++ b/sw/source/core/text/txtfrm.cxx
@@ -750,10 +750,16 @@ void SwTextFrame::CalcLineSpace()
     if( IsLocked() || !HasPara() )
         return;
 
-    SwParaPortion *pPara;
     if( GetDrawObjs() ||
-        GetTextNode()->GetSwAttrSet().GetLRSpace().IsAutoFirst() ||
-        ( pPara = GetPara() )->IsFixLineHeight() )
+        GetTextNode()->GetSwAttrSet().GetLRSpace().IsAutoFirst())
+    {
+        Init();
+        return;
+    }
+
+    SwParaPortion *const pPara(GetPara());
+    assert(pPara);
+    if (pPara->IsFixLineHeight())
     {
         Init();
         return;
diff --git a/sw/source/core/txtnode/txtedt.cxx b/sw/source/core/txtnode/txtedt.cxx
index 4fead8e..7ab42af 100644
--- a/sw/source/core/txtnode/txtedt.cxx
+++ b/sw/source/core/txtnode/txtedt.cxx
@@ -446,7 +446,7 @@ void SwTextNode::RstTextAttr(
 
     // iterate over attribute array until start of attribute is behind deletion range
     size_t i = 0;
-    sal_Int32 nAttrStart;
+    sal_Int32 nAttrStart = sal_Int32();
     SwTextAttr *pHt = nullptr;
     while ( (i < m_pSwpHints->Count())
             && ( ( ( nAttrStart = m_pSwpHints->Get(i)->GetStart()) < nEnd )


More information about the Libreoffice-commits mailing list