summaryrefslogtreecommitdiff
path: root/hwpfilter
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-02-24 20:43:12 +0000
committerMiklos Vajna <vmiklos@collabora.co.uk>2018-02-26 10:11:17 +0100
commit7567beec1f7accf8b6d42ca68fd2c96a6d68ac48 (patch)
tree396b3341391bbf29c6c2f6785502ab439bfbc474 /hwpfilter
parent98a02abac221fdceb38d65b802be672948fc6ce1 (diff)
forcepoint #8 ensure ColumnDef lifetime
Change-Id: Idb0c7b1530dc57f4d7c14751f1b76caecc3b03a6 Reviewed-on: https://gerrit.libreoffice.org/50289 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'hwpfilter')
-rw-r--r--hwpfilter/source/hinfo.cxx11
-rw-r--r--hwpfilter/source/hinfo.h2
-rw-r--r--hwpfilter/source/hpara.cxx4
-rw-r--r--hwpfilter/source/hwpfile.cxx6
-rw-r--r--hwpfilter/source/hwpfile.h5
5 files changed, 14 insertions, 14 deletions
diff --git a/hwpfilter/source/hinfo.cxx b/hwpfilter/source/hinfo.cxx
index d6b30ee6b815..aab00beb36f2 100644
--- a/hwpfilter/source/hinfo.cxx
+++ b/hwpfilter/source/hinfo.cxx
@@ -202,6 +202,7 @@ ParaShape::ParaShape()
, pspacing_next(0)
, condense(0)
, arrange_type(0)
+ , xColdef(new ColumnDef)
, shade(0)
, outline(0)
, outline_continue(0)
@@ -241,17 +242,17 @@ void ParaShape::Read(HWPFile & hwpf)
return;
tab.position = tmp16;
}
- hwpf.Read1b(&coldef.ncols, 1);
- hwpf.Read1b(&coldef.separator, 1);
+ hwpf.Read1b(&(xColdef->ncols), 1);
+ hwpf.Read1b(&(xColdef->separator), 1);
if (!hwpf.Read2b(tmp16))
return;
- coldef.spacing = tmp16;
+ xColdef->spacing = tmp16;
if (!hwpf.Read2b(tmp16))
return;
- coldef.columnlen = tmp16;
+ xColdef->columnlen = tmp16;
if (!hwpf.Read2b(tmp16))
return;
- coldef.columnlen0 = tmp16;
+ xColdef->columnlen0 = tmp16;
hwpf.Read1b(&shade, 1);
hwpf.Read1b(&outline, 1);
hwpf.Read1b(&outline_continue, 1);
diff --git a/hwpfilter/source/hinfo.h b/hwpfilter/source/hinfo.h
index 049082e39e28..2cdaba65b2da 100644
--- a/hwpfilter/source/hinfo.h
+++ b/hwpfilter/source/hinfo.h
@@ -292,7 +292,7 @@ struct ParaShape
unsigned char condense;
unsigned char arrange_type;
TabSet tabs[MAXTABS];
- ColumnDef coldef;
+ std::shared_ptr<ColumnDef> xColdef;
unsigned char shade;
unsigned char outline;
unsigned char outline_continue;
diff --git a/hwpfilter/source/hpara.cxx b/hwpfilter/source/hpara.cxx
index 79fd93145ad8..bd37b282a47f 100644
--- a/hwpfilter/source/hpara.cxx
+++ b/hwpfilter/source/hpara.cxx
@@ -124,8 +124,8 @@ bool HWPPara::Read(HWPFile & hwpf, unsigned char flag)
}
if (nch && !reuse_shape){
- if( pshape->coldef.ncols > 1 ) {
- hwpf.SetColumnDef(&(pshape->coldef));
+ if( pshape->xColdef->ncols > 1 ) {
+ hwpf.SetColumnDef(pshape->xColdef);
}
}
diff --git a/hwpfilter/source/hwpfile.cxx b/hwpfilter/source/hwpfile.cxx
index 128be0caa7af..b49393238157 100644
--- a/hwpfilter/source/hwpfile.cxx
+++ b/hwpfilter/source/hwpfile.cxx
@@ -413,7 +413,7 @@ void HWPFile::TagsRead()
ColumnDef *HWPFile::GetColumnDef(int num)
{
if (static_cast<size_t>(num) < columnlist.size())
- return columnlist[num]->coldef;
+ return columnlist[num]->xColdef.get();
else
return nullptr;
}
@@ -570,12 +570,12 @@ void HWPFile::AddColumnInfo()
setMaxSettedPage();
}
-void HWPFile::SetColumnDef(ColumnDef *coldef)
+void HWPFile::SetColumnDef(const std::shared_ptr<ColumnDef>& rColdef)
{
ColumnInfo *cinfo = columnlist.back().get();
if( cinfo->bIsSet )
return;
- cinfo->coldef = coldef;
+ cinfo->xColdef = rColdef;
cinfo->bIsSet = true;
}
diff --git a/hwpfilter/source/hwpfile.h b/hwpfilter/source/hwpfile.h
index b205e986963a..fa2a8e6df2ac 100644
--- a/hwpfilter/source/hwpfile.h
+++ b/hwpfilter/source/hwpfile.h
@@ -72,11 +72,10 @@ class HStream;
struct ColumnInfo{
int start_page;
bool bIsSet;
- ColumnDef *coldef;
+ std::shared_ptr<ColumnDef> xColdef;
explicit ColumnInfo(int num){
start_page = num;
bIsSet = false;
- coldef = nullptr;
}
};
@@ -214,7 +213,7 @@ class DLLEXPORT HWPFile
void AddBox(FBox *);
void AddPage(){ m_nCurrentPage++;}
void AddColumnInfo();
- void SetColumnDef(ColumnDef *coldef);
+ void SetColumnDef(std::shared_ptr<ColumnDef> const &);
void AddParaShape(std::shared_ptr<ParaShape> const &);
void AddCharShape(std::shared_ptr<CharShape> const &);
void AddFBoxStyle(FBoxStyle *);