[Libreoffice-commits] core.git: 3 commits - hwpfilter/source

Caolán McNamara caolanm at redhat.com
Fri Apr 28 11:55:39 UTC 2017


 hwpfilter/source/hbox.cxx    |   12 +---
 hwpfilter/source/hbox.h      |    7 +-
 hwpfilter/source/hwpread.cxx |  128 +++++++++++++++++++++----------------------
 3 files changed, 71 insertions(+), 76 deletions(-)

New commits:
commit 032e7a4b5c4904d00b3f0ab75af113ed316343f8
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Apr 28 12:52:01 2017 +0100

    ofz: avoid timeout and return early on failure
    
    Change-Id: I083aa07b311fa073ea5eeb1d569b0902e0f9c095

diff --git a/hwpfilter/source/hbox.h b/hwpfilter/source/hbox.h
index 5ed353364c0f..a110d70d0f32 100644
--- a/hwpfilter/source/hbox.h
+++ b/hwpfilter/source/hbox.h
@@ -228,7 +228,7 @@ struct Cell                                       // Cell
     unsigned char diagonal;                       // { 0=none,\=1,/=2,X=3}
     unsigned char protect;
 
-    void  Read( HWPFile &hwpf );
+    bool  Read(HWPFile &hwpf);
 };
 
 /**
diff --git a/hwpfilter/source/hwpread.cxx b/hwpfilter/source/hwpread.cxx
index 1a96eaa29046..92f484b1d10d 100644
--- a/hwpfilter/source/hwpread.cxx
+++ b/hwpfilter/source/hwpread.cxx
@@ -185,7 +185,7 @@ static void UpdateBBox(FBox * fbox)
     fbox->boundey = fbox->pgy + fbox->ys - 1;
 }
 
-void Cell::Read(HWPFile & hwpf)
+bool Cell::Read(HWPFile & hwpf)
 {
     hwpf.Read2b(&p, 1);
     hwpf.Read2b(&color, 1);
@@ -203,7 +203,7 @@ void Cell::Read(HWPFile & hwpf)
     hwpf.Read1b(linetype, 4);
     hwpf.Read1b(&shade, 1);
     hwpf.Read1b(&diagonal, 1);
-    hwpf.Read1b(&protect, 1);
+    return hwpf.Read1b(&protect, 1) == 1;
 }
 
 bool TxtBox::Read(HWPFile & hwpf)
@@ -288,11 +288,14 @@ bool TxtBox::Read(HWPFile & hwpf)
     if (!cell) {
         return hwpf.SetState(HWP_InvalidFileFormat);
     }
-    for (ii = 0; ii < ncell; ii++)
+    bool bSuccess = true;
+    for (ii = 0; ii < ncell && bSuccess; ii++)
     {
-        cell[ii].Read(hwpf);
+        bSuccess = cell[ii].Read(hwpf);
         cell[ii].key = sal::static_int_cast<unsigned char>(ii);
     }
+    if (!bSuccess)
+        return false;
     if (ncell == 1)
         style.cell = &cell[0];
     plists.resize(ncell);
commit 6394fd4a1d56af4afab4f9683d5a2087a32588e6
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Apr 28 12:49:19 2017 +0100

    convert to std::vector
    
    Change-Id: I315755d49df5d29c6c7075237b7401f16c89b449

diff --git a/hwpfilter/source/hbox.cxx b/hwpfilter/source/hbox.cxx
index 88e76c7ca7f8..479279f2bc49 100644
--- a/hwpfilter/source/hbox.cxx
+++ b/hwpfilter/source/hbox.cxx
@@ -356,19 +356,18 @@ TxtBox::TxtBox()
     , protect(0)
     , cell(nullptr)
     , m_pTable(nullptr)
-    , plists(nullptr)
 {
     reserved[0] = reserved[1] = 0;
 }
 
 TxtBox::~TxtBox()
 {
-    delete[]cell;
+    delete[] cell;
 
-    for (int ii = 0; ii < nCell; ++ii)
+    for (auto& entry : plists)
     {
-        std::list < HWPPara* >::iterator it = plists[ii].begin();
-        for (; it != plists[ii].end(); ++it)
+        std::list < HWPPara* >::iterator it = entry.begin();
+        for (; it != entry.end(); ++it)
         {
             HWPPara* pPara = *it;
             delete pPara;
@@ -381,11 +380,8 @@ TxtBox::~TxtBox()
         HWPPara* pPara = *it;
         delete pPara;
     }
-
-    delete[]plists;
 }
 
-
 // picture(11)
 
 Picture::Picture()
diff --git a/hwpfilter/source/hbox.h b/hwpfilter/source/hbox.h
index 15c97c6363f4..5ed353364c0f 100644
--- a/hwpfilter/source/hbox.h
+++ b/hwpfilter/source/hbox.h
@@ -360,11 +360,12 @@ struct TxtBox: public FBox
     short     protect;                            //1=size lock
 
     Cell      *cell;
-     Table *m_pTable;
+    Table *m_pTable;
 /**
  * Paragraph list
  */
-    std::list<HWPPara*> *plists;
+    std::vector<std::list<HWPPara*>> plists;
+
 /**
  * Caption
  */
diff --git a/hwpfilter/source/hwpread.cxx b/hwpfilter/source/hwpread.cxx
index ca2a90905e50..1a96eaa29046 100644
--- a/hwpfilter/source/hwpread.cxx
+++ b/hwpfilter/source/hwpread.cxx
@@ -295,10 +295,7 @@ bool TxtBox::Read(HWPFile & hwpf)
     }
     if (ncell == 1)
         style.cell = &cell[0];
-    plists = ::comphelper::newArray_null< std::list< HWPPara* > >(ncell);
-    if (!plists) {
-        return hwpf.SetState(HWP_InvalidFileFormat);
-    }
+    plists.resize(ncell);
     for (ii = 0; ii < ncell; ii++)
         hwpf.ReadParaList(plists[ii]);
      // caption
commit f30fb61c650e8b844501dcbbccbd441528b75997
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Apr 28 12:36:10 2017 +0100

    fix indent
    
    Change-Id: I75faea4d701f401c5367142e4710ae613c8834be

diff --git a/hwpfilter/source/hwpread.cxx b/hwpfilter/source/hwpread.cxx
index eb27376cdc77..ca2a90905e50 100644
--- a/hwpfilter/source/hwpread.cxx
+++ b/hwpfilter/source/hwpread.cxx
@@ -206,7 +206,6 @@ void Cell::Read(HWPFile & hwpf)
     hwpf.Read1b(&protect, 1);
 }
 
-
 bool TxtBox::Read(HWPFile & hwpf)
 {
     int ii, ncell;
@@ -292,7 +291,7 @@ bool TxtBox::Read(HWPFile & hwpf)
     for (ii = 0; ii < ncell; ii++)
     {
         cell[ii].Read(hwpf);
-          cell[ii].key = sal::static_int_cast<unsigned char>(ii);
+        cell[ii].key = sal::static_int_cast<unsigned char>(ii);
     }
     if (ncell == 1)
         style.cell = &cell[0];
@@ -305,65 +304,64 @@ bool TxtBox::Read(HWPFile & hwpf)
      // caption
     hwpf.ReadParaList(caption);
 
-     if( type == 0 ){ // if table?
-          TCell* *pArr = ::comphelper::newArray_null<TCell *>(ncell);
-          if (!pArr) {
-                return hwpf.SetState(HWP_InvalidFileFormat);
-          }
-          Table *tbl = new Table;
-          for( ii = 0 ; ii < ncell; ii++)
-          {
-                tbl->columns.insert(cell[ii].x);
-                tbl->columns.insert(cell[ii].x + cell[ii].w);
-                tbl->rows.insert(cell[ii].y);
-                tbl->rows.insert(cell[ii].y + cell[ii].h);
-          }
-          for( ii = 0 ; ii < ncell; ii++)
-          {
-                TCell *tcell = new TCell;
-                tcell->nColumnIndex = tbl->columns.getIndex(cell[ii].x);
-                tcell->nColumnSpan = tbl->columns.getIndex(cell[ii].x + cell[ii].w) -
-                     tcell->nColumnIndex;
-                tcell->nRowIndex = tbl->rows.getIndex(cell[ii].y);
-                tcell->nRowSpan = tbl->rows.getIndex(cell[ii].y + cell[ii].h) -
-                     tcell->nRowIndex;
-                tcell->pCell = &cell[ii];
-                pArr[ii] = tcell;
-          }
-          TCell *tmp;
-          // Sort by row and column
-          for( ii = 0 ; ii < ncell - 1; ii++ ){
-                for( int jj = ii ; jj < ncell ; jj++){
-                     if( pArr[ii]->nRowIndex > pArr[jj]->nRowIndex ){
-                          tmp = pArr[ii];
-                          pArr[ii] = pArr[jj];
-                          pArr[jj] = tmp;
-                     }
-                }
-                for( int kk = ii ; kk > 0 ; kk--){
-                     if( ( pArr[kk]->nRowIndex == pArr[kk-1]->nRowIndex ) &&
-                            (pArr[kk]->nColumnIndex < pArr[kk-1]->nColumnIndex )){
-                          tmp = pArr[kk];
-                          pArr[kk] = pArr[kk-1];
-                          pArr[kk-1] = tmp;
-                     }
-                }
-          }
-          for( ii = 0 ; ii < ncell ; ii++ ){
-                tbl->cells.push_back(pArr[ii]);
-          }
-          tbl->box = this;
-          hwpf.AddTable(tbl);
-          m_pTable = tbl;
-          delete[] pArr;
-     }
-     else
-          m_pTable = nullptr;
+    if( type == 0 ){ // if table?
+        TCell* *pArr = ::comphelper::newArray_null<TCell *>(ncell);
+        if (!pArr) {
+              return hwpf.SetState(HWP_InvalidFileFormat);
+        }
+        Table *tbl = new Table;
+        for( ii = 0 ; ii < ncell; ii++)
+        {
+            tbl->columns.insert(cell[ii].x);
+            tbl->columns.insert(cell[ii].x + cell[ii].w);
+            tbl->rows.insert(cell[ii].y);
+            tbl->rows.insert(cell[ii].y + cell[ii].h);
+        }
+        for( ii = 0 ; ii < ncell; ii++)
+        {
+            TCell *tcell = new TCell;
+            tcell->nColumnIndex = tbl->columns.getIndex(cell[ii].x);
+            tcell->nColumnSpan = tbl->columns.getIndex(cell[ii].x + cell[ii].w) -
+                tcell->nColumnIndex;
+            tcell->nRowIndex = tbl->rows.getIndex(cell[ii].y);
+            tcell->nRowSpan = tbl->rows.getIndex(cell[ii].y + cell[ii].h) -
+                tcell->nRowIndex;
+            tcell->pCell = &cell[ii];
+            pArr[ii] = tcell;
+        }
+        TCell *tmp;
+        // Sort by row and column
+        for( ii = 0 ; ii < ncell - 1; ii++ ){
+            for( int jj = ii ; jj < ncell ; jj++){
+               if( pArr[ii]->nRowIndex > pArr[jj]->nRowIndex ){
+                    tmp = pArr[ii];
+                    pArr[ii] = pArr[jj];
+                    pArr[jj] = tmp;
+               }
+            }
+            for( int kk = ii ; kk > 0 ; kk--){
+               if( ( pArr[kk]->nRowIndex == pArr[kk-1]->nRowIndex ) &&
+                      (pArr[kk]->nColumnIndex < pArr[kk-1]->nColumnIndex )){
+                    tmp = pArr[kk];
+                    pArr[kk] = pArr[kk-1];
+                    pArr[kk-1] = tmp;
+               }
+            }
+        }
+        for( ii = 0 ; ii < ncell ; ii++ ){
+            tbl->cells.push_back(pArr[ii]);
+        }
+        tbl->box = this;
+        hwpf.AddTable(tbl);
+        m_pTable = tbl;
+        delete[] pArr;
+    }
+    else
+        m_pTable = nullptr;
 
     return !hwpf.State();
 }
 
-
 // picture(11)
 bool Picture::Read(HWPFile & hwpf)
 {


More information about the Libreoffice-commits mailing list