[Libreoffice-commits] .: Branch 'libreoffice-3-5' - sw/source

Michael Stahl mst at kemper.freedesktop.org
Fri Mar 9 08:05:35 PST 2012


 sw/source/filter/ww8/docxattributeoutput.cxx |    7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

New commits:
commit 6eea398000f04c68f422ab07353ea4631f4edb5e
Author: Luboš Luňák <l.lunak at suse.cz>
Date:   Mon Jan 9 15:51:10 2012 +0100

    fdo#46337: don't use an invalidated iterator
    
    (cherry picked from commit 2df1c40b4b7cb3107a68984db644f10097f04c3c)
    
    Signed-off-by: Michael Stahl <mstahl at redhat.com>

diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index d9f3376..0ea06b7 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -517,7 +517,7 @@ void DocxAttributeOutput::StartRun( const SwRedlineData* pRedlineData )
 void DocxAttributeOutput::EndRun()
 {
     // Write field starts
-    for ( std::vector<FieldInfos>::iterator pIt = m_Fields.begin(); pIt != m_Fields.end(); ++pIt )
+    for ( std::vector<FieldInfos>::iterator pIt = m_Fields.begin(); pIt != m_Fields.end(); )
     {
         // Add the fields starts for all but hyperlinks and TOCs
         if ( pIt->bOpen && pIt->pField )
@@ -528,10 +528,11 @@ void DocxAttributeOutput::EndRun()
             // Unknown fields sould be removed too
             if ( !pIt->bClose || ( pIt->eType == ww::eUNKNOWN ) )
             {
-                m_Fields.erase( pIt );
-                --pIt;
+                pIt = m_Fields.erase( pIt );
+                continue;
             }
         }
+        ++pIt;
     }
 
     // write the run properties + the text, already in the correct order


More information about the Libreoffice-commits mailing list