From 6b6118ffcc9dbc5b2268d9962e8365539a357054 Mon Sep 17 00:00:00 2001 From: ElenaSubbotina Date: Wed, 14 May 2025 16:41:24 +0300 Subject: [PATCH] fix bug #74435 --- .../Reader/OOXParagraphElementReaders.cpp | 19 ++++++++----------- RtfFile/OOXml/Reader/OOXShapeReader.cpp | 4 ++-- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/RtfFile/OOXml/Reader/OOXParagraphElementReaders.cpp b/RtfFile/OOXml/Reader/OOXParagraphElementReaders.cpp index e8a5697fed..f41cd7ec4a 100644 --- a/RtfFile/OOXml/Reader/OOXParagraphElementReaders.cpp +++ b/RtfFile/OOXml/Reader/OOXParagraphElementReaders.cpp @@ -969,21 +969,18 @@ bool OOXRunReader::Parse( ReaderParameter oParam , RtfParagraph& oOutputParagrap }break; case OOX::et_mc_alternateContent: { + bool res = false; OOX::Logic::CAlternateContent *ooxAlt = dynamic_cast(ooxItem); - if (!ooxAlt->m_arrChoiceItems.empty()) + + for (size_t i = 0; res == false && i < ooxAlt->m_arrFallbackItems.size(); i++) { - for (size_t i = 0; i < ooxAlt->m_arrChoiceItems.size(); i++) - { - Parse(oParam , oOutputParagraph, poStyle, oNewProperty, ooxAlt->m_arrChoiceItems[i]); - } - } - else + res = Parse(oParam, oOutputParagraph, poStyle, oNewProperty, ooxAlt->m_arrFallbackItems[i]); + } + for (size_t i = 0; res == false && i < ooxAlt->m_arrChoiceItems.size(); i++) { - for (size_t i = 0; i < ooxAlt->m_arrFallbackItems.size(); i++) - { - Parse(oParam , oOutputParagraph, poStyle, oNewProperty, ooxAlt->m_arrFallbackItems[i]); - } + res = Parse(oParam, oOutputParagraph, poStyle, oNewProperty, ooxAlt->m_arrChoiceItems[i]); } + }break; case OOX::et_w_sym: { diff --git a/RtfFile/OOXml/Reader/OOXShapeReader.cpp b/RtfFile/OOXml/Reader/OOXShapeReader.cpp index 76573becf0..e0aea7e555 100644 --- a/RtfFile/OOXml/Reader/OOXShapeReader.cpp +++ b/RtfFile/OOXml/Reader/OOXShapeReader.cpp @@ -1262,11 +1262,11 @@ bool OOXShapeReader::ParseShape( ReaderParameter oParam, RtfShapePtr& pOutput) if ((oox_sp_style) && (oox_sp_style->fontRef.idx.IsInit())) { std::wstring font_name; - if (oox_sp_style->fontRef.idx->GetBYTECode() == 0) + if (oParam.oDocx->m_pTheme && oox_sp_style->fontRef.idx->GetBYTECode() == 0) { font_name = oParam.oDocx->m_pTheme->themeElements.fontScheme.majorFont.latin.typeface; } - else if (oox_sp_style->fontRef.idx->GetBYTECode() == 1) + else if (oParam.oDocx->m_pTheme && oox_sp_style->fontRef.idx->GetBYTECode() == 1) { font_name = oParam.oDocx->m_pTheme->themeElements.fontScheme.minorFont.latin.typeface; }