diff options
author | Caolán McNamara <caolanm@redhat.com> | 2018-02-24 20:43:12 +0000 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2018-02-26 10:11:17 +0100 |
commit | 7567beec1f7accf8b6d42ca68fd2c96a6d68ac48 (patch) | |
tree | 396b3341391bbf29c6c2f6785502ab439bfbc474 /hwpfilter | |
parent | 98a02abac221fdceb38d65b802be672948fc6ce1 (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.cxx | 11 | ||||
-rw-r--r-- | hwpfilter/source/hinfo.h | 2 | ||||
-rw-r--r-- | hwpfilter/source/hpara.cxx | 4 | ||||
-rw-r--r-- | hwpfilter/source/hwpfile.cxx | 6 | ||||
-rw-r--r-- | hwpfilter/source/hwpfile.h | 5 |
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 *); |