From ae95cdd2a1708a8e9e114dd9bcf577f57f1f5af3 Mon Sep 17 00:00:00 2001 From: Dinesh Patil Date: Wed, 21 May 2014 19:32:54 +0530 Subject: fdo#79008 Crash: File getting crash while saving in LO File is getting crashed while saving in LO, as it tries to access the value of vector after erasing that value. Code changed to access the vector value first and then erase that value from vector. Change-Id: I29369b7582fdbd7363d0e6fdae091a30c79a747d Reviewed-on: https://gerrit.libreoffice.org/9433 Tested-by: Michael Stahl Reviewed-by: Michael Stahl (cherry picked from commit ed3fd76b65b2a281effea55b8a55101a8b740aec) Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport.cxx --- sw/qa/extras/ooxmlexport/data/fdo79008.docx | Bin 0 -> 53143 bytes sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 11 ++++++++++- sw/source/filter/ww8/wrtw8esh.cxx | 2 +- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 sw/qa/extras/ooxmlexport/data/fdo79008.docx diff --git a/sw/qa/extras/ooxmlexport/data/fdo79008.docx b/sw/qa/extras/ooxmlexport/data/fdo79008.docx new file mode 100644 index 000000000000..2b1758776b14 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/fdo79008.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx index ee5f974e38e2..f6c3591007cd 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx @@ -2057,7 +2057,16 @@ DECLARE_OOXMLEXPORT_TEST(testFDO78384,"fdo78384.docx") } #endif -CPPUNIT_PLUGIN_IMPLEMENT(); +DECLARE_OOXMLEXPORT_TEST(testfdo79008, "fdo79008.docx") +{ + /* File getting crash while saving in LO. + * Checking if document.xml file is getting created after fix + */ + xmlDocPtr pXmlDoc = parseExport("word/document.xml"); + if (!pXmlDoc) + return; +} +CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/ww8/wrtw8esh.cxx b/sw/source/filter/ww8/wrtw8esh.cxx index 9729d23efda1..b3b6c1109541 100644 --- a/sw/source/filter/ww8/wrtw8esh.cxx +++ b/sw/source/filter/ww8/wrtw8esh.cxx @@ -1145,8 +1145,8 @@ void MSWord_SdrAttrIter::SetCharSet(const EECharAttrib& rAttr, bool bStart) std::find( aChrTxtAtrArr.begin(), aChrTxtAtrArr.end(), &rAttr ); if ( it != aChrTxtAtrArr.end() ) { - aChrTxtAtrArr.erase( it ); aChrSetArr.erase( aChrSetArr.begin() + (it - aChrTxtAtrArr.begin()) ); + aChrTxtAtrArr.erase( it ); } } } -- cgit v1.2.3