[Libreoffice-commits] core.git: lotuswordpro/inc lotuswordpro/qa lotuswordpro/source
lotuswordpro/inc/xfilter/xftable.hxx |2 + lotuswordpro/qa/cppunit/data/fail/ofz35646-1.lwp |binary lotuswordpro/source/filter/xfilter/xfcell.cxx|2 - lotuswordpro/source/filter/xfilter/xftable.cxx | 32 ++- 4 files changed, 34 insertions(+), 2 deletions(-) New commits: commit b67f42c4c2906b7059b93d748c8efccd588b1e1c Author: Caolán McNamara AuthorDate: Wed Aug 25 17:42:17 2021 +0100 Commit: Caolán McNamara CommitDate: Thu Aug 26 09:56:08 2021 +0200 ofz#35646 Indirect-leak Change-Id: Ie79d9c49b6beef04ab111a63166abc7f093ad36b Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121041 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/lotuswordpro/inc/xfilter/xftable.hxx b/lotuswordpro/inc/xfilter/xftable.hxx index f36a1f295be6..ce292f3a258c 100644 --- a/lotuswordpro/inc/xfilter/xftable.hxx +++ b/lotuswordpro/inc/xfilter/xftable.hxx @@ -115,6 +115,8 @@ private: OUString m_strDefCellStyle; OUString m_strDefRowStyle; OUString m_strDefColStyle; + +bool ContainsTable(const XFTable* pTable) const; }; inline void XFTable::SetTableName(const OUString& name) diff --git a/lotuswordpro/qa/cppunit/data/fail/ofz35646-1.lwp b/lotuswordpro/qa/cppunit/data/fail/ofz35646-1.lwp new file mode 100644 index ..5db8cea8c5bd Binary files /dev/null and b/lotuswordpro/qa/cppunit/data/fail/ofz35646-1.lwp differ diff --git a/lotuswordpro/source/filter/xfilter/xfcell.cxx b/lotuswordpro/source/filter/xfilter/xfcell.cxx index bbfde6eab9f3..dfc5889db652 100644 --- a/lotuswordpro/source/filter/xfilter/xfcell.cxx +++ b/lotuswordpro/source/filter/xfilter/xfcell.cxx @@ -157,7 +157,7 @@ OUString XFCell::GetCellName() return name; } -voidXFCell::ToXml(IXFStream *pStrm) +void XFCell::ToXml(IXFStream *pStrm) { IXFAttrList *pAttrList = pStrm->GetAttrList(); diff --git a/lotuswordpro/source/filter/xfilter/xftable.cxx b/lotuswordpro/source/filter/xfilter/xftable.cxx index 6acb1b21a35f..4326f218b1e2 100644 --- a/lotuswordpro/source/filter/xfilter/xftable.cxx +++ b/lotuswordpro/source/filter/xfilter/xftable.cxx @@ -81,6 +81,30 @@ voidXFTable::SetColumnStyle(sal_Int32 col, const OUString& style) m_aColumns[col] = style; } +bool XFTable::ContainsTable(const XFTable* pTable) const +{ +for (auto const& elem : m_aRows) +{ +const XFRow *pRow = elem.second.get(); + +for (sal_Int32 i = 0; i < pRow->GetCellCount(); ++i) +{ +const XFCell* pCell = pRow->GetCell(i + 1); //starts at 1, not 0 +if (const XFTable* pSubTable = pCell->GetSubTable()) +{ +if (pSubTable == pTable) +return true; +if (pTable->ContainsTable(pTable)) +return true; +} +if (pCell->HierarchyContains(pTable)) +return true; +} +} + +return false; +} + void XFTable::AddRow(rtl::Reference const & rRow) { assert(rRow); @@ -88,8 +112,14 @@ void XFTable::AddRow(rtl::Reference const & rRow) for (sal_Int32 i = 0; i < rRow->GetCellCount(); ++i) { XFCell* pFirstCell = rRow->GetCell(i + 1); //starts at 1, not 0 -if (pFirstCell->GetSubTable() == this || pFirstCell->HierarchyContains(this)) +if (const XFTable* pSubTable = pFirstCell->GetSubTable()) +{ +if (pSubTable == this || pSubTable->ContainsTable(this)) +throw std::runtime_error("table is a subtable of itself"); +} +if (pFirstCell->HierarchyContains(this)) throw std::runtime_error("table is a subtable of itself"); + } int row = rRow->GetRow();
[Libreoffice-commits] core.git: lotuswordpro/inc lotuswordpro/qa lotuswordpro/source
lotuswordpro/inc/xfilter/xfcontent.hxx|3 --- lotuswordpro/qa/cppunit/data/pass/tdf129993-2.lwp |binary lotuswordpro/qa/cppunit/data/pass/tdf71147-1.lwp |binary lotuswordpro/source/filter/lwptablelayout.cxx |2 +- lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx |3 --- 5 files changed, 1 insertion(+), 7 deletions(-) New commits: commit 0453eb32b9055fe27fcb7b9cef22c46d32e59196 Author: Caolán McNamara AuthorDate: Mon Jan 20 19:45:26 2020 + Commit: Caolán McNamara CommitDate: Mon Jan 20 21:54:35 2020 +0100 Resolves: tdf#130093 some lwp file not loading Change-Id: I2be53792f0fadcf1ca0e99c8f9fab7305d0fcddd Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87100 Tested-by: Jenkins Reviewed-by: Caolán McNamara diff --git a/lotuswordpro/inc/xfilter/xfcontent.hxx b/lotuswordpro/inc/xfilter/xfcontent.hxx index 8cb5be5da2c6..ca5bfc4a9da3 100644 --- a/lotuswordpro/inc/xfilter/xfcontent.hxx +++ b/lotuswordpro/inc/xfilter/xfcontent.hxx @@ -105,7 +105,6 @@ public: protected: XFContent() : m_bDoingToXml(false) -, m_bInserted(false) { } @@ -116,8 +115,6 @@ protected: OUString m_strStyleName; private: bool m_bDoingToXml; -public: -bool m_bInserted; }; #endif diff --git a/lotuswordpro/qa/cppunit/data/pass/tdf129993-2.lwp b/lotuswordpro/qa/cppunit/data/pass/tdf129993-2.lwp new file mode 100644 index ..0f0645e3ba77 Binary files /dev/null and b/lotuswordpro/qa/cppunit/data/pass/tdf129993-2.lwp differ diff --git a/lotuswordpro/qa/cppunit/data/pass/tdf71147-1.lwp b/lotuswordpro/qa/cppunit/data/pass/tdf71147-1.lwp new file mode 100644 index ..fc351f434dde Binary files /dev/null and b/lotuswordpro/qa/cppunit/data/pass/tdf71147-1.lwp differ diff --git a/lotuswordpro/source/filter/lwptablelayout.cxx b/lotuswordpro/source/filter/lwptablelayout.cxx index a49c4375858b..e1647dd34511 100644 --- a/lotuswordpro/source/filter/lwptablelayout.cxx +++ b/lotuswordpro/source/filter/lwptablelayout.cxx @@ -834,7 +834,7 @@ void LwpTableLayout::Read() void LwpTableLayout::XFConvert(XFContentContainer* pCont) { if (!m_pXFTable) -throw std::runtime_error("missing table"); +return; pCont->Add(m_pXFTable.get()); } /** diff --git a/lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx b/lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx index c8e8de733027..b64ad72721a4 100644 --- a/lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx +++ b/lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx @@ -70,9 +70,6 @@ XFContentContainer::~XFContentContainer() void XFContentContainer::Add(XFContent *pContent) { -if (pContent->m_bInserted) -throw std::runtime_error("already inserted"); -pContent->m_bInserted = true; m_aContents.emplace_back(pContent); } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: lotuswordpro/inc lotuswordpro/qa lotuswordpro/source
lotuswordpro/inc/xfilter/xfcontent.hxx|3 +++ lotuswordpro/qa/cppunit/data/fail/ofz6208-1.lwp |binary lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx |9 ++--- 3 files changed, 9 insertions(+), 3 deletions(-) New commits: commit 22fc8c634c5f9b09d45aff0403503f4d8226328d Author: Caolán McNamaraDate: Mon Feb 12 14:01:20 2018 + ofz#6208 Indirect-leak Change-Id: I8d6761bd951cc1ddd4a45eabb26428bc40c2271a Reviewed-on: https://gerrit.libreoffice.org/49600 Tested-by: Jenkins Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara diff --git a/lotuswordpro/inc/xfilter/xfcontent.hxx b/lotuswordpro/inc/xfilter/xfcontent.hxx index 611f9daaa719..38021b4fcd7a 100644 --- a/lotuswordpro/inc/xfilter/xfcontent.hxx +++ b/lotuswordpro/inc/xfilter/xfcontent.hxx @@ -105,6 +105,7 @@ public: protected: XFContent() : m_bDoingToXml(false) +, m_bInserted(false) { } @@ -115,6 +116,8 @@ protected: OUString m_strStyleName; private: bool m_bDoingToXml; +public: +bool m_bInserted; }; #endif diff --git a/lotuswordpro/qa/cppunit/data/fail/ofz6208-1.lwp b/lotuswordpro/qa/cppunit/data/fail/ofz6208-1.lwp new file mode 100644 index ..5b068065a1f0 Binary files /dev/null and b/lotuswordpro/qa/cppunit/data/fail/ofz6208-1.lwp differ diff --git a/lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx b/lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx index 67dc59017343..b1398bc023cd 100644 --- a/lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx +++ b/lotuswordpro/source/filter/xfilter/xfcontentcontainer.cxx @@ -68,8 +68,11 @@ XFContentContainer::~XFContentContainer() { } -voidXFContentContainer::Add(XFContent *pContent) +void XFContentContainer::Add(XFContent *pContent) { +if (pContent->m_bInserted) +throw std::runtime_error("already inserted"); +pContent->m_bInserted = true; m_aContents.emplace_back(pContent); } @@ -80,12 +83,12 @@ void XFContentContainer::Add(const OUString& text) Add(xTC.get()); } -int XFContentContainer::GetCount() const +int XFContentContainer::GetCount() const { return m_aContents.size(); } -voidXFContentContainer::Reset() +void XFContentContainer::Reset() { m_aContents.clear(); } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits