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

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Tue Oct 8 06:15:46 UTC 2019


 sw/source/filter/ww8/ww8par.hxx   |    1 -
 sw/source/filter/ww8/ww8par2.cxx  |   11 ++---------
 sw/source/filter/ww8/ww8struc.hxx |    5 +++++
 3 files changed, 7 insertions(+), 10 deletions(-)

New commits:
commit 2c181658e11623d750d8b4d4f971a52d0f10d1a7
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Mon Oct 7 17:41:02 2019 +0200
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Tue Oct 8 08:14:09 2019 +0200

    Let WW8_TCell zero-initialize its members
    
    ...which removes the need for WW8TabBandDesc::setcelldefaults and its dubious
    memset operating on a non-trivial type (as WW8_TCell has WW8_BRCVer9 data
    members, which in turn has a user-provided default ctor)
    
    Change-Id: Iabb02e353387f4fc2a002578b1b2b116d2f7313c
    Reviewed-on: https://gerrit.libreoffice.org/80394
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx
index 8d104eb0e45c..856923589c4b 100644
--- a/sw/source/filter/ww8/ww8par.hxx
+++ b/sw/source/filter/ww8/ww8par.hxx
@@ -1042,7 +1042,6 @@ struct WW8TabBandDesc
     WW8TabBandDesc();
     WW8TabBandDesc(WW8TabBandDesc const & rBand);    // deep copy
     ~WW8TabBandDesc();
-    static void setcelldefaults(WW8_TCell *pCells, short nCells);
     void ReadDef(bool bVer67, const sal_uInt8* pS, short nLen);
     void ProcessDirection(const sal_uInt8* pParams);
     void ProcessSprmTSetBRC(int nBrcVer, const sal_uInt8* pParamsTSetBRC, sal_uInt16 nParamsLen);
diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx
index c52cf0040023..936bf6789018 100644
--- a/sw/source/filter/ww8/ww8par2.cxx
+++ b/sw/source/filter/ww8/ww8par2.cxx
@@ -1080,7 +1080,8 @@ WW8TabBandDesc::WW8TabBandDesc( WW8TabBandDesc const & rBand )
     *this = rBand;
     if( rBand.pTCs )
     {
-        pTCs = new WW8_TCell[nWwCols];
+        pTCs = reinterpret_cast<WW8_TCell *>(new char[nWwCols * sizeof (WW8_TCell)]);
+            // create uninitialized
         memcpy( pTCs, rBand.pTCs, nWwCols * sizeof( WW8_TCell ) );
     }
     if( rBand.pSHDs )
@@ -1142,7 +1143,6 @@ void WW8TabBandDesc::ReadDef(bool bVer67, const sal_uInt8* pS, short nLen)
     {
         // create empty TCs
         pTCs = new WW8_TCell[nCols];
-        setcelldefaults(pTCs,nCols);
     }
 
     short nColsToRead = std::min<short>(nFileCols, nCols);
@@ -1398,7 +1398,6 @@ void WW8TabBandDesc::ProcessSprmTInsert(const sal_uInt8* pParamsTInsert)
     }
 
     WW8_TCell *pTC2s = new WW8_TCell[nNewWwCols];
-    setcelldefaults(pTC2s, nNewWwCols);
 
     if (pTCs)
     {
@@ -1614,11 +1613,6 @@ void WW8TabBandDesc::ReadNewShd(const sal_uInt8* pS, bool bVer67)
         pNewSHDs[i++] = COL_AUTO;
 }
 
-void WW8TabBandDesc::setcelldefaults(WW8_TCell *pCells, short nCols)
-{
-    memset(static_cast<void*>(pCells), 0, nCols * sizeof(WW8_TCell));
-}
-
 namespace
 {
     SprmResult HasTabCellSprm(WW8PLCFx_Cp_FKP* pPap, bool bVer67)
@@ -2227,7 +2221,6 @@ void WW8TabDesc::CalcDefaults()
         if( !pR->pTCs )
         {
             pR->pTCs = new WW8_TCell[ pR->nWwCols ];
-            WW8TabBandDesc::setcelldefaults(pR->pTCs, pR->nWwCols);
         }
         for (int k = 0; k < pR->nWwCols; ++k)
         {
diff --git a/sw/source/filter/ww8/ww8struc.hxx b/sw/source/filter/ww8/ww8struc.hxx
index f4f50e1e748d..d8b0d026bcbc 100644
--- a/sw/source/filter/ww8/ww8struc.hxx
+++ b/sw/source/filter/ww8/ww8struc.hxx
@@ -548,6 +548,11 @@ struct WW8_TCell    // this is the base for further work (corresponds mostly to
 //  BRC brcLeft;            // specification of left border of table row
 //  BRC brcBottom;          // specification of bottom border of table row
 //  BRC brcRight;           // specification of right border of table row.
+
+    WW8_TCell():
+        bFirstMerged(0), bMerged(0), bVertical(0), bBackward(0), bRotateFont(0), bVertMerge(0),
+        bVertRestart(0), nVertAlign(0), fUnused(0) {}
+        // default member initializers for the bitfields will only work in C++20
 };
 // cbTC (count of bytes of a TC) is 18(decimal), 12(hex).
 


More information about the Libreoffice-commits mailing list