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

avoid infinite regress in busted documents

Change-Id: I639617e41cd9a9a51a3dd3efa32ac1cf2991b9d2
üst 08306201
......@@ -92,14 +92,28 @@ public:
*/
OUString GetStyleName() {return m_strStyleName;}
virtual void ToXml(IXFStream * stream) = 0;
void DoToXml(IXFStream* stream)
{
if (m_bDoingToXml)
throw std::runtime_error("recursion in content");
m_bDoingToXml = true;
ToXml(stream);
m_bDoingToXml = false;
}
protected:
XFContent() {}
XFContent()
: m_bDoingToXml(false)
{
}
virtual void ToXml(IXFStream* stream) = 0;
virtual ~XFContent() {}
OUString m_strStyleName;
OUString m_strStyleName;
private:
bool m_bDoingToXml;
};
#endif
......
......@@ -131,7 +131,7 @@ void XFContentContainer::ToXml(IXFStream *pStrm)
{
XFContent *pContent = it->get();
if( pContent )
pContent->ToXml(pStrm);
pContent->DoToXml(pStrm);
}
}
......
......@@ -112,7 +112,7 @@ void XFTextSpan::ToXml(IXFStream *pStrm)
{
XFContent *pContent = it->get();
if( pContent )
pContent->ToXml(pStrm);
pContent->DoToXml(pStrm);
}
pStrm->EndElement( "text:span" );
......@@ -135,7 +135,7 @@ void XFTextSpanStart::ToXml(IXFStream *pStrm)
{
XFContent *pContent = it->get();
if( pContent )
pContent->ToXml(pStrm);
pContent->DoToXml(pStrm);
}
}
void XFTextSpanEnd::ToXml(IXFStream *pStrm)
......@@ -145,7 +145,7 @@ void XFTextSpanEnd::ToXml(IXFStream *pStrm)
{
XFContent *pContent = it->get();
if( pContent )
pContent->ToXml(pStrm);
pContent->DoToXml(pStrm);
}
pStrm->EndElement( "text:span" );
}
......
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