summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sax/fshelper.hxx6
-rw-r--r--oox/source/export/vmlexport.cxx11
-rw-r--r--sax/source/tools/fastserializer.cxx14
-rw-r--r--sax/source/tools/fastserializer.hxx22
-rw-r--r--sax/source/tools/fshelper.cxx10
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx94
6 files changed, 96 insertions, 61 deletions
diff --git a/include/sax/fshelper.hxx b/include/sax/fshelper.hxx
index b86e9de5a190..52d53995b84b 100644
--- a/include/sax/fshelper.hxx
+++ b/include/sax/fshelper.hxx
@@ -137,9 +137,11 @@ public:
static FastAttributeList *createAttrList();
- void mark( const ::com::sun::star::uno::Sequence< sal_Int32 >& aOrder =
+ void mark(sal_Int32 nTag,
+ const ::com::sun::star::uno::Sequence< sal_Int32 >& rOrder =
::com::sun::star::uno::Sequence< sal_Int32 >() );
- void mergeTopMarks( MergeMarksEnum eMergeType = MERGE_MARKS_APPEND );
+ void mergeTopMarks(sal_Int32 nTag,
+ MergeMarksEnum eMergeType = MERGE_MARKS_APPEND );
/*
Now create all the overloads in a typesafe way (i.e. without varargs) by creating a number of overloads
diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx
index 9b42d2cfe30f..84b3737a3b6b 100644
--- a/oox/source/export/vmlexport.cxx
+++ b/oox/source/export/vmlexport.cxx
@@ -45,6 +45,9 @@ using namespace sax_fastparser;
using namespace oox::vml;
using namespace com::sun::star;
+static const sal_Int32 Tag_Container = 44444;
+static const sal_Int32 Tag_Commit = 44445;
+
VMLExport::VMLExport( ::sax_fastparser::FSHelperPtr pSerializer, VMLTextExport* pTextExport )
: EscherEx( EscherExGlobalRef(new EscherExGlobal(0)), 0, /*bOOXML=*/true )
, m_pSerializer( pSerializer )
@@ -98,7 +101,7 @@ void VMLExport::OpenContainer( sal_uInt16 nEscherContainer, int nRecInstance )
// postpone the output so that we are able to write even the elements
// that we learn inside Commit()
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_Container);
}
}
@@ -109,7 +112,7 @@ void VMLExport::CloseContainer()
// write the shape now when we have all the info
sal_Int32 nShapeElement = StartShape();
- m_pSerializer->mergeTopMarks();
+ m_pSerializer->mergeTopMarks(Tag_Container);
EndShape( nShapeElement );
@@ -357,7 +360,7 @@ void VMLExport::Commit( EscherPropertyContainer& rProps, const Rectangle& rRect
// postpone the output of the embedded elements so that they are written
// inside the shapes
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_Commit);
// dimensions
if ( m_nShapeType == ESCHER_ShpInst_Line )
@@ -860,7 +863,7 @@ void VMLExport::Commit( EscherPropertyContainer& rProps, const Rectangle& rRect
}
}
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_POSTPONE );
+ m_pSerializer->mergeTopMarks(Tag_Commit, sax_fastparser::MERGE_MARKS_POSTPONE );
}
OString VMLExport::ShapeIdString( sal_uInt32 nId )
diff --git a/sax/source/tools/fastserializer.cxx b/sax/source/tools/fastserializer.cxx
index 2d4a2e1ff5bc..66466e9b6b90 100644
--- a/sax/source/tools/fastserializer.cxx
+++ b/sax/source/tools/fastserializer.cxx
@@ -330,17 +330,17 @@ namespace sax_fastparser {
}
}
- void FastSaxSerializer::mark( const Int32Sequence& aOrder )
+ void FastSaxSerializer::mark(sal_Int32 const nTag, const Int32Sequence& rOrder)
{
- if ( aOrder.hasElements() )
+ if (rOrder.hasElements())
{
- boost::shared_ptr< ForMerge > pSort( new ForSort( aOrder ) );
+ boost::shared_ptr< ForMerge > pSort( new ForSort(nTag, rOrder) );
maMarkStack.push( pSort );
maCachedOutputStream.setOutput( pSort );
}
else
{
- boost::shared_ptr< ForMerge > pMerge( new ForMerge( ) );
+ boost::shared_ptr< ForMerge > pMerge( new ForMerge(nTag) );
maMarkStack.push( pMerge );
maCachedOutputStream.setOutput( pMerge );
}
@@ -401,12 +401,16 @@ namespace sax_fastparser {
}
#endif
- void FastSaxSerializer::mergeTopMarks( sax_fastparser::MergeMarksEnum eMergeType )
+ void FastSaxSerializer::mergeTopMarks(
+ sal_Int32 const nTag, sax_fastparser::MergeMarksEnum const eMergeType)
{
SAL_WARN_IF(mbMarkStackEmpty, "sax", "Empty mark stack - nothing to merge");
+ assert(!mbMarkStackEmpty); // should never happen
if ( mbMarkStackEmpty )
return;
+ assert(maMarkStack.top()->m_Tag == nTag && "mark/merge tag mismatch!");
+ (void) nTag;
#ifdef DBG_UTIL
if (dynamic_cast<ForSort*>(maMarkStack.top().get()))
{
diff --git a/sax/source/tools/fastserializer.hxx b/sax/source/tools/fastserializer.hxx
index 4dc786b7a712..5fcbef51b6df 100644
--- a/sax/source/tools/fastserializer.hxx
+++ b/sax/source/tools/fastserializer.hxx
@@ -127,8 +127,10 @@ public:
p, r, mark(), t, [text], /t, mark(), rPr, [something], /rPr,
mergeTopMarks( MERGE_MARKS_PREPEND ), mergeTopMarks( MERGE_MARKS_APPEND ), /r, /p
and you are done.
+
+ @param nTag debugging aid to ensure mark and merge match in LIFO order
*/
- void mark( const Int32Sequence& aOrder = Int32Sequence() );
+ void mark(sal_Int32 nTag, const Int32Sequence& rOrder = Int32Sequence());
/** Merge 2 topmost marks.
@@ -143,9 +145,12 @@ public:
When the MERGE_MARKS_POSTPONE is specified, the merge happens just
before the next merge.
+ @param nTag debugging aid to ensure mark and merge match in LIFO order
+
@see mark()
*/
- void mergeTopMarks( sax_fastparser::MergeMarksEnum eMergeType = sax_fastparser::MERGE_MARKS_APPEND );
+ void mergeTopMarks(sal_Int32 nTag,
+ sax_fastparser::MergeMarksEnum eMergeType = sax_fastparser::MERGE_MARKS_APPEND);
private:
/** Helper class to cache data and write in chunks to XOutputStream or ForMerge::append.
@@ -161,6 +166,7 @@ private:
Int8Sequence maPostponed;
public:
+ sal_Int32 const m_Tag;
#ifdef DBG_UTIL
// pending close tags, followed by pending open tags
::std::deque<sal_Int32> m_DebugEndedElements;
@@ -170,7 +176,7 @@ private:
::std::deque<sal_Int32> m_DebugPostponedStartedElements;
#endif
- ForMerge() : maData(), maPostponed() {}
+ ForMerge(sal_Int32 const nTag) : m_Tag(nTag) {}
virtual ~ForMerge() {}
virtual void setCurrentElement( ::sal_Int32 /*nToken*/ ) {}
@@ -196,11 +202,11 @@ private:
Int32Sequence maOrder;
public:
- ForSort( const Int32Sequence& aOrder ) :
- ForMerge(),
- maData(),
- mnCurrentElement( 0 ),
- maOrder( aOrder ) {}
+ ForSort(sal_Int32 const nTag, const Int32Sequence& rOrder)
+ : ForMerge(nTag)
+ , mnCurrentElement( 0 )
+ , maOrder( rOrder )
+ {}
void setCurrentElement( ::sal_Int32 nToken ) SAL_OVERRIDE;
diff --git a/sax/source/tools/fshelper.cxx b/sax/source/tools/fshelper.cxx
index 438aef75c48a..46d87644d471 100644
--- a/sax/source/tools/fshelper.cxx
+++ b/sax/source/tools/fshelper.cxx
@@ -153,14 +153,16 @@ FastSerializerHelper* FastSerializerHelper::writeId(sal_Int32 tokenId)
return mpSerializer->getOutputStream();
}
-void FastSerializerHelper::mark( const Sequence< sal_Int32 >& aOrder )
+void FastSerializerHelper::mark(
+ sal_Int32 const nTag, const Sequence<sal_Int32>& rOrder)
{
- mpSerializer->mark( aOrder );
+ mpSerializer->mark(nTag, rOrder);
}
-void FastSerializerHelper::mergeTopMarks( MergeMarksEnum eMergeType )
+void FastSerializerHelper::mergeTopMarks(
+ sal_Int32 const nTag, MergeMarksEnum const eMergeType)
{
- mpSerializer->mergeTopMarks( eMergeType );
+ mpSerializer->mergeTopMarks(nTag, eMergeType);
}
FastAttributeList * FastSerializerHelper::createAttrList()
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index 710c862d75da..0771d0270f36 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -140,6 +140,24 @@ using namespace sw::util;
using namespace ::com::sun::star;
using namespace ::com::sun::star::drawing;
+static const sal_Int32 Tag_StartParagraph_1 = 1;
+static const sal_Int32 Tag_StartParagraph_2 = 2;
+static const sal_Int32 Tag_WriteSdtBlock = 3;
+static const sal_Int32 Tag_StartParagraphProperties = 4;
+static const sal_Int32 Tag_InitCollectedParagraphProperties = 5;
+static const sal_Int32 Tag_StartRun_1 = 6;
+static const sal_Int32 Tag_StartRun_2 = 7;
+static const sal_Int32 Tag_StartRun_3 = 8;
+static const sal_Int32 Tag_EndRun_1 = 9;
+static const sal_Int32 Tag_EndRun_2 = 10;
+static const sal_Int32 Tag_StartRunProperties = 11;
+static const sal_Int32 Tag_InitCollectedRunProperties = 12;
+static const sal_Int32 Tag_Redline_1 = 13;
+static const sal_Int32 Tag_Redline_2 = 14;
+static const sal_Int32 Tag_TableDefinition = 15;
+static const sal_Int32 Tag_OutputFlyFrame = 16;
+static const sal_Int32 Tag_StartSection = 17;
+
class FFDataWriterHelper
{
::sax_fastparser::FSHelperPtr m_pSerializer;
@@ -303,13 +321,13 @@ void DocxAttributeOutput::StartParagraph( ww8::WW8TableNodeInfo::Pointer_t pText
// this mark is used to be able to enclose the paragraph inside a sdr tag.
// We will only know if we have to do that later.
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_StartParagraph_1);
m_pSerializer->startElementNS( XML_w, XML_p, FSEND );
// postpone the output of the run (we get it before the paragraph
// properties, but must write it after them)
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_StartParagraph_2);
// no section break in this paragraph yet; can be set in SectionBreak()
m_pSectionInfo.reset();
@@ -431,7 +449,7 @@ bool DocxAttributeOutput::TextBoxIsFramePr(const SwFrameFormat& rFrameFormat)
void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pTextNodeInfoInner )
{
// write the paragraph properties + the run, already in the correct order
- m_pSerializer->mergeTopMarks();
+ m_pSerializer->mergeTopMarks(Tag_StartParagraph_2);
std::vector< boost::shared_ptr <sw::Frame> > aFramePrTextbox;
// Write the anchored frame if any
// Word can't handle nested text boxes, so write them on the same level.
@@ -560,9 +578,9 @@ void DocxAttributeOutput::EndParagraph( ww8::WW8TableNodeInfoInner::Pointer_t pT
m_rExport.SdrExporter().setParagraphHasDrawing( false );
m_bRunTextIsOn = false;
if(aFramePrTextbox.empty())
- m_pSerializer->mergeTopMarks();
+ m_pSerializer->mergeTopMarks(Tag_StartParagraph_1);
else
- m_pSerializer->mergeTopMarks(sax_fastparser::MERGE_MARKS_IGNORE );
+ m_pSerializer->mergeTopMarks(Tag_StartParagraph_1, sax_fastparser::MERGE_MARKS_IGNORE);
// Write framePr
if(!aFramePrTextbox.empty())
@@ -596,7 +614,7 @@ void DocxAttributeOutput::WriteSdtBlock( sal_Int32& nSdtPrToken,
if( nSdtPrToken > 0 || pSdtPrDataBindingAttrs )
{
// sdt start mark
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_WriteSdtBlock);
m_pSerializer->startElementNS( XML_w, XML_sdt, FSEND );
@@ -658,7 +676,7 @@ void DocxAttributeOutput::WriteSdtBlock( sal_Int32& nSdtPrToken,
m_pSerializer->startElementNS( XML_w, XML_sdtContent, FSEND );
// prepend the tags since the sdt start mark before the paragraph
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_PREPEND );
+ m_pSerializer->mergeTopMarks(Tag_WriteSdtBlock, sax_fastparser::MERGE_MARKS_PREPEND);
// write the ending tags after the paragraph
if (bPara)
@@ -797,7 +815,7 @@ void DocxAttributeOutput::SectionBreaks(const SwTextNode& rNode)
void DocxAttributeOutput::StartParagraphProperties()
{
- m_pSerializer->mark( );
+ m_pSerializer->mark(Tag_StartParagraphProperties);
m_pSerializer->startElementNS( XML_w, XML_pPr, FSEND );
@@ -863,7 +881,7 @@ void DocxAttributeOutput::InitCollectedParagraphProperties()
for ( sal_Int32 i = 0; i < len; i++ )
aSeqOrder[i] = aOrder[i];
- m_pSerializer->mark( aSeqOrder );
+ m_pSerializer->mark(Tag_InitCollectedParagraphProperties, aSeqOrder);
}
void DocxAttributeOutput::WriteCollectedParagraphProperties()
@@ -940,7 +958,7 @@ void DocxAttributeOutput::EndParagraphProperties(const SfxItemSet& rParagraphMar
WriteCollectedParagraphProperties();
// Merge the marks for the ordered elements
- m_pSerializer->mergeTopMarks( );
+ m_pSerializer->mergeTopMarks(Tag_InitCollectedParagraphProperties);
// Write 'Paragraph Mark' properties
m_pSerializer->startElementNS( XML_w, XML_rPr, FSEND );
@@ -978,7 +996,7 @@ void DocxAttributeOutput::EndParagraphProperties(const SfxItemSet& rParagraphMar
}
// mergeTopMarks() after paragraph mark properties child elements.
- m_pSerializer->mergeTopMarks();
+ m_pSerializer->mergeTopMarks(Tag_InitCollectedRunProperties);
m_pSerializer->endElementNS( XML_w, XML_rPr );
if (!m_bWritingHeaderFooter && m_pCurrentFrame)
@@ -1005,7 +1023,7 @@ void DocxAttributeOutput::EndParagraphProperties(const SfxItemSet& rParagraphMar
// merge the properties _before_ the run (strictly speaking, just
// after the start of the paragraph)
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_PREPEND );
+ m_pSerializer->mergeTopMarks(Tag_StartParagraphProperties, sax_fastparser::MERGE_MARKS_PREPEND);
}
void DocxAttributeOutput::SetStateOfFlyFrame( FlyProcessingState nStateOfFlyFrame )
@@ -1035,16 +1053,16 @@ void DocxAttributeOutput::StartRun( const SwRedlineData* pRedlineData, bool /*bS
m_pRedlineData = pRedlineData;
// this mark is used to be able to enclose the run inside a sdr tag.
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_StartRun_1);
// postpone the output of the start of a run (there are elements that need
// to be written before the start of the run, but we learn which they are
// _inside_ of the run)
- m_pSerializer->mark(); // let's call it "postponed run start"
+ m_pSerializer->mark(Tag_StartRun_2); // let's call it "postponed run start"
// postpone the output of the text (we get it before the run properties,
// but must write it after them)
- m_pSerializer->mark(); // let's call it "postponed text"
+ m_pSerializer->mark(Tag_StartRun_3); // let's call it "postponed text"
}
void DocxAttributeOutput::EndRun()
@@ -1084,11 +1102,11 @@ void DocxAttributeOutput::EndRun()
}
// write the run properties + the text, already in the correct order
- m_pSerializer->mergeTopMarks(); // merges with "postponed text", see above
+ m_pSerializer->mergeTopMarks(Tag_StartRun_3); // merges with "postponed text", see above
// level down, to be able to prepend the actual run start attribute (just
// before "postponed run start")
- m_pSerializer->mark(); // let's call it "actual run start"
+ m_pSerializer->mark(Tag_EndRun_1); // let's call it "actual run start"
bool bCloseEarlierSDT = false;
if (m_bEndCharSdt)
@@ -1200,10 +1218,10 @@ void DocxAttributeOutput::EndRun()
{
RunText(OUString("\t")) ;
}
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_PREPEND ); // merges with "postponed run start", see above
+ m_pSerializer->mergeTopMarks(Tag_EndRun_1, sax_fastparser::MERGE_MARKS_PREPEND); // merges with "postponed run start", see above
// write the run start + the run content
- m_pSerializer->mergeTopMarks(); // merges the "actual run start"
+ m_pSerializer->mergeTopMarks(Tag_StartRun_2); // merges the "actual run start"
// append the actual run end
m_pSerializer->endElementNS( XML_w, XML_r );
@@ -1227,12 +1245,12 @@ void DocxAttributeOutput::EndRun()
if (bCloseEarlierSDT)
{
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_EndRun_2);
EndSdtBlock();
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_PREPEND );
+ m_pSerializer->mergeTopMarks(Tag_EndRun_2, sax_fastparser::MERGE_MARKS_PREPEND);
}
- m_pSerializer->mergeTopMarks();
+ m_pSerializer->mergeTopMarks(Tag_StartRun_1);
for (std::vector<const SwOLENode*>::iterator it = m_aPostponedMaths.begin(); it != m_aPostponedMaths.end(); ++it)
WritePostponedMath(*it);
@@ -1639,7 +1657,7 @@ void DocxAttributeOutput::StartRunProperties()
{
// postpone the output so that we can later [in EndRunProperties()]
// prepend the properties before the text
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_StartRunProperties);
m_pSerializer->startElementNS( XML_w, XML_rPr, FSEND );
@@ -1735,7 +1753,7 @@ void DocxAttributeOutput::InitCollectedRunProperties()
for ( sal_Int32 i = 0; i < len; i++ )
aSeqOrder[i] = aOrder[i];
- m_pSerializer->mark( aSeqOrder );
+ m_pSerializer->mark(Tag_InitCollectedRunProperties, aSeqOrder);
}
namespace
@@ -1954,7 +1972,7 @@ void DocxAttributeOutput::EndRunProperties( const SwRedlineData* pRedlineData )
WriteCollectedRunProperties();
// Merge the marks for the ordered elements
- m_pSerializer->mergeTopMarks();
+ m_pSerializer->mergeTopMarks(Tag_InitCollectedRunProperties);
m_pSerializer->endElementNS( XML_w, XML_rPr );
@@ -1975,7 +1993,7 @@ void DocxAttributeOutput::EndRunProperties( const SwRedlineData* pRedlineData )
// merge the properties _before_ the run text (strictly speaking, just
// after the start of the run)
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_PREPEND );
+ m_pSerializer->mergeTopMarks(Tag_StartRunProperties, sax_fastparser::MERGE_MARKS_PREPEND);
}
void DocxAttributeOutput::GetSdtEndBefore(const SdrObject* pSdrObj)
@@ -2357,7 +2375,7 @@ void DocxAttributeOutput::Redline( const SwRedlineData* pRedlineData)
const SfxItemSet *pChangesSet = pFormattingChanges->GetItemSet();
if (pChangesSet)
{
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_Redline_1);
m_pSerializer->startElementNS( XML_w, XML_rPr, FSEND );
@@ -2383,7 +2401,7 @@ void DocxAttributeOutput::Redline( const SwRedlineData* pRedlineData)
m_pSerializer->endElementNS( XML_w, XML_rPr );
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_PREPEND );
+ m_pSerializer->mergeTopMarks(Tag_Redline_1, sax_fastparser::MERGE_MARKS_PREPEND);
}
}
}
@@ -2410,7 +2428,7 @@ void DocxAttributeOutput::Redline( const SwRedlineData* pRedlineData)
const SfxItemSet *pChangesSet = pFormattingChanges->GetItemSet();
if (pChangesSet)
{
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_Redline_2);
m_pSerializer->startElementNS( XML_w, XML_pPr, FSEND );
@@ -2434,7 +2452,7 @@ void DocxAttributeOutput::Redline( const SwRedlineData* pRedlineData)
m_pSerializer->endElementNS( XML_w, XML_pPr );
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_PREPEND );
+ m_pSerializer->mergeTopMarks(Tag_Redline_2, sax_fastparser::MERGE_MARKS_PREPEND);
}
}
}
@@ -3145,7 +3163,7 @@ void DocxAttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t
for ( sal_Int32 i = 0; i < len; i++ )
aSeqOrder[i] = aOrder[i];
- m_pSerializer->mark( aSeqOrder );
+ m_pSerializer->mark(Tag_TableDefinition, aSeqOrder);
long nPageSize = 0;
const char* widthType = "dxa";
@@ -3364,7 +3382,7 @@ void DocxAttributeOutput::TableDefinition( ww8::WW8TableNodeInfoInner::Pointer_t
FSEND );
// Merge the marks for the ordered elements
- m_pSerializer->mergeTopMarks( );
+ m_pSerializer->mergeTopMarks(Tag_TableDefinition);
m_pSerializer->endElementNS( XML_w, XML_tblPr );
@@ -4876,7 +4894,7 @@ void DocxAttributeOutput::WritePostponedDMLDrawing()
void DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame &rFrame, const Point& rNdTopLeft )
{
- m_pSerializer->mark();
+ m_pSerializer->mark(Tag_OutputFlyFrame);
switch ( rFrame.GetWriterType() )
{
@@ -5006,7 +5024,7 @@ void DocxAttributeOutput::OutputFlyFrame_Impl( const sw::Frame &rFrame, const Po
break;
}
- m_pSerializer->mergeTopMarks( sax_fastparser::MERGE_MARKS_POSTPONE );
+ m_pSerializer->mergeTopMarks(Tag_OutputFlyFrame, sax_fastparser::MERGE_MARKS_POSTPONE);
}
bool DocxAttributeOutput::IsDiagram( const SdrObject* sdrObject )
@@ -5324,7 +5342,7 @@ void DocxAttributeOutput::EndStyleProperties( bool bParProp )
WriteCollectedParagraphProperties();
// Merge the marks for the ordered elements
- m_pSerializer->mergeTopMarks( );
+ m_pSerializer->mergeTopMarks(Tag_InitCollectedParagraphProperties);
m_pSerializer->endElementNS( XML_w, XML_pPr );
}
@@ -5333,7 +5351,7 @@ void DocxAttributeOutput::EndStyleProperties( bool bParProp )
WriteCollectedRunProperties();
// Merge the marks for the ordered elements
- m_pSerializer->mergeTopMarks();
+ m_pSerializer->mergeTopMarks(Tag_InitCollectedRunProperties);
m_pSerializer->endElementNS( XML_w, XML_rPr );
}
@@ -5469,7 +5487,7 @@ void DocxAttributeOutput::StartSection()
for ( sal_Int32 i = 0; i < len; i++ )
aSeqOrder[i] = aOrder[i];
- m_pSerializer->mark( aSeqOrder );
+ m_pSerializer->mark(Tag_StartSection, aSeqOrder);
m_bHadSectPr = true;
}
@@ -5484,7 +5502,7 @@ void DocxAttributeOutput::EndSection()
}
// Order the elements
- m_pSerializer->mergeTopMarks( );
+ m_pSerializer->mergeTopMarks(Tag_StartSection);
m_pSerializer->endElementNS( XML_w, XML_sectPr );
m_bOpenedSectPr = false;