Kaydet (Commit) 834cebd1 authored tarafından Caolán McNamara's avatar Caolán McNamara

ofz: assert on trying to insert footer when already inserting the footer

Change-Id: I1fd91cca4aec91700f7db233b420fe27752d659b
Reviewed-on: https://gerrit.libreoffice.org/47272Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst a820979e
...@@ -138,8 +138,11 @@ void SwHTMLParser::NewDivision( HtmlTokenId nToken ) ...@@ -138,8 +138,11 @@ void SwHTMLParser::NewDivision( HtmlTokenId nToken )
} }
} }
if( !bPositioned && (bHeader || bFooter) && IsNewDoc() ) if (!bPositioned && (bHeader || bFooter) && IsNewDoc() && !m_bReadingHeaderOrFooter)
{ {
m_bReadingHeaderOrFooter = true;
xCntxt->SetHeaderOrFooter(true);
SwPageDesc *pPageDesc = m_pCSS1Parser->GetMasterPageDesc(); SwPageDesc *pPageDesc = m_pCSS1Parser->GetMasterPageDesc();
SwFrameFormat& rPageFormat = pPageDesc->GetMaster(); SwFrameFormat& rPageFormat = pPageDesc->GetMaster();
...@@ -403,6 +406,8 @@ void SwHTMLParser::EndDivision() ...@@ -403,6 +406,8 @@ void SwHTMLParser::EndDivision()
// close attribute // close attribute
EndContext(xCntxt.get()); EndContext(xCntxt.get());
SetAttr(); // set paragraph attributes really fast because of JavaScript SetAttr(); // set paragraph attributes really fast because of JavaScript
if (xCntxt->IsHeaderOrFooter())
m_bReadingHeaderOrFooter = false;
} }
} }
......
...@@ -299,6 +299,7 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, SwPaM& rCursor, SvStream& rIn, ...@@ -299,6 +299,7 @@ SwHTMLParser::SwHTMLParser( SwDoc* pD, SwPaM& rCursor, SvStream& rIn,
m_bIgnoreHTMLComments( bNoHTMLComments ), m_bIgnoreHTMLComments( bNoHTMLComments ),
m_bRemoveHidden( false ), m_bRemoveHidden( false ),
m_bBodySeen( false ), m_bBodySeen( false ),
m_bReadingHeaderOrFooter( false ),
m_pTempViewFrame(nullptr) m_pTempViewFrame(nullptr)
{ {
m_nEventId = nullptr; m_nEventId = nullptr;
......
...@@ -231,6 +231,7 @@ class HTMLAttrContext ...@@ -231,6 +231,7 @@ class HTMLAttrContext
bool bRestartPRE : 1; bool bRestartPRE : 1;
bool bRestartXMP : 1; bool bRestartXMP : 1;
bool bRestartListing : 1; bool bRestartListing : 1;
bool bHeaderOrFooter : 1;
public: public:
void ClearSaveDocContext(); void ClearSaveDocContext();
...@@ -255,7 +256,8 @@ public: ...@@ -255,7 +256,8 @@ public:
bFinishPREListingXMP( false ), bFinishPREListingXMP( false ),
bRestartPRE( false ), bRestartPRE( false ),
bRestartXMP( false ), bRestartXMP( false ),
bRestartListing( false ) bRestartListing( false ),
bHeaderOrFooter( false )
{} {}
explicit HTMLAttrContext( HtmlTokenId nTokn ) : explicit HTMLAttrContext( HtmlTokenId nTokn ) :
...@@ -276,7 +278,8 @@ public: ...@@ -276,7 +278,8 @@ public:
bFinishPREListingXMP( false ), bFinishPREListingXMP( false ),
bRestartPRE( false ), bRestartPRE( false ),
bRestartXMP( false ), bRestartXMP( false ),
bRestartListing( false ) bRestartListing( false ),
bHeaderOrFooter( false )
{} {}
~HTMLAttrContext() { ClearSaveDocContext(); } ~HTMLAttrContext() { ClearSaveDocContext(); }
...@@ -326,6 +329,9 @@ public: ...@@ -326,6 +329,9 @@ public:
void SetRestartListing( bool bSet ) { bRestartListing = bSet; } void SetRestartListing( bool bSet ) { bRestartListing = bSet; }
bool IsRestartListing() const { return bRestartListing; } bool IsRestartListing() const { return bRestartListing; }
void SetHeaderOrFooter( bool bSet ) { bHeaderOrFooter = bSet; }
bool IsHeaderOrFooter() const { return bHeaderOrFooter; }
void SetAppendMode( SwHTMLAppendMode eMode ) { eAppend = eMode; } void SetAppendMode( SwHTMLAppendMode eMode ) { eAppend = eMode; }
SwHTMLAppendMode GetAppendMode() const { return eAppend; } SwHTMLAppendMode GetAppendMode() const { return eAppend; }
}; };
...@@ -485,6 +491,7 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient ...@@ -485,6 +491,7 @@ class SwHTMLParser : public SfxHTMLParser, public SwClient
bool m_bRemoveHidden : 1; // the filter implementation might set the hidden flag bool m_bRemoveHidden : 1; // the filter implementation might set the hidden flag
bool m_bBodySeen : 1; bool m_bBodySeen : 1;
bool m_bReadingHeaderOrFooter : 1;
/// the names corresponding to the DOCINFO field subtypes INFO[1-4] /// the names corresponding to the DOCINFO field subtypes INFO[1-4]
OUString m_InfoNames[4]; OUString m_InfoNames[4];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment