From 9aa6bceddf7bdc3cc41859e460d6f1e363fc195c Mon Sep 17 00:00:00 2001 From: Alexey Nagaev Date: Mon, 7 Apr 2025 17:05:56 +0300 Subject: [PATCH] Fix bug with non-nullptr conttext --- DocxRenderer/src/logic/Page.cpp | 1 + DocxRenderer/src/logic/elements/ContText.cpp | 10 ++++++++++ DocxRenderer/src/logic/elements/ContText.h | 1 + DocxRenderer/test/main.cpp | 2 ++ 4 files changed, 14 insertions(+) diff --git a/DocxRenderer/src/logic/Page.cpp b/DocxRenderer/src/logic/Page.cpp index fffeb4d282..d6f8987816 100644 --- a/DocxRenderer/src/logic/Page.cpp +++ b/DocxRenderer/src/logic/Page.cpp @@ -63,6 +63,7 @@ namespace NSDocxRenderer m_arOutputObjects.clear(); m_oCurrVectorGraphics.Clear(); m_oClipVectorGraphics.Clear(); + m_oContBuilder.Clear(); m_arCompleteObjectsXml.clear(); } diff --git a/DocxRenderer/src/logic/elements/ContText.cpp b/DocxRenderer/src/logic/elements/ContText.cpp index fbeeb18e57..fd0c7e8304 100644 --- a/DocxRenderer/src/logic/elements/ContText.cpp +++ b/DocxRenderer/src/logic/elements/ContText.cpp @@ -875,10 +875,12 @@ namespace NSDocxRenderer std::vector CContTextBuilder::GetConts() { return std::move(m_arConts); + m_pCurrCont = nullptr; } std::vector CContTextBuilder::GetDiacs() { return std::move(m_arDiacs); + m_pCurrCont = nullptr; } void CContTextBuilder::AddUnicode( @@ -1028,4 +1030,12 @@ namespace NSDocxRenderer { m_pCurrCont = nullptr; } + void CContTextBuilder::Clear() + { + m_pCurrCont = nullptr; + m_arConts.clear(); + m_arDiacs.clear(); + m_oPrevFont.SetDefaultParams(); + m_oPrevBrush.SetDefaultParams(); + } } diff --git a/DocxRenderer/src/logic/elements/ContText.h b/DocxRenderer/src/logic/elements/ContText.h index 62ce6e455a..6a9288de4e 100644 --- a/DocxRenderer/src/logic/elements/ContText.h +++ b/DocxRenderer/src/logic/elements/ContText.h @@ -176,6 +176,7 @@ namespace NSDocxRenderer bool bWriteStyleRaw = false); void NullCurrCont(); + void Clear(); private: std::vector m_arConts; diff --git a/DocxRenderer/test/main.cpp b/DocxRenderer/test/main.cpp index e967041134..fb41084e1a 100644 --- a/DocxRenderer/test/main.cpp +++ b/DocxRenderer/test/main.cpp @@ -77,6 +77,8 @@ int main(int argc, char *argv[]) oWorker.m_sDirectory = NSFile::GetProcessDirectory() + L"/fonts_cache"; oWorker.m_bIsNeedThumbnails = false; + oWorker.m_arAdditionalFolders.push_back(L"/home/flexus/Work/fonts"); + if (!NSDirectory::Exists(oWorker.m_sDirectory)) NSDirectory::CreateDirectory(oWorker.m_sDirectory);