[Libreoffice-commits] core.git: sw/qa writerfilter/source

Vinaya Mandke vinaya.mandke at synerzip.com
Mon Jun 30 07:56:35 PDT 2014


 sw/qa/core/data/ooxml/pass/fdo80514.docx          |binary
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |    6 ++++++
 writerfilter/source/dmapper/NumberingManager.cxx  |    5 +++++
 writerfilter/source/dmapper/NumberingManager.hxx  |    3 +++
 4 files changed, 14 insertions(+)

New commits:
commit b00a59287e0b1dcc0a46dd18e5e884282eb859f3
Author: Vinaya Mandke <vinaya.mandke at synerzip.com>
Date:   Wed Jun 25 12:53:07 2014 +0530

    fdo#80514 LO crashes on opening; tries to remove a para with NumPicBullet
    
    LO crashes while opening the issue file as, an extra Num Pic Bullets is
    attached to the dummy para. All NumPicBullets were disposed in
    dtor of ListsManager.
    LO tries to remove dummy para after the section, while the pic bullet is still attached to it.
    This causes Lo to crash while removing the paragraph.
    
    Added a 'ListsManager::DisposeNumPicBullets( )' to remove the extra bullets from the document
    Added the issue file in sw/qa/core/data/ooxml/pass/
    
    Change-Id: I578f48364dcb4ff939fa3800e90db88a99d5ca1a
    Reviewed-on: https://gerrit.libreoffice.org/9897
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/qa/core/data/ooxml/pass/fdo80514.docx b/sw/qa/core/data/ooxml/pass/fdo80514.docx
new file mode 100644
index 0000000..5ea2ce7
Binary files /dev/null and b/sw/qa/core/data/ooxml/pass/fdo80514.docx differ
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 20fcbfc..8bd5900 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -299,6 +299,12 @@ void DomainMapper_Impl::RemoveDummyParaForTableInSection()
         return;
     uno::Reference< text::XTextCursor > xCursor = GetTopTextAppend()->createTextCursorByRange(pSectionContext->GetStartingRange());
 
+    // Remove the extra NumPicBullets from the document,
+    // which get attached to the first paragraph in the
+    // document
+    ListsManager::Pointer pListTable = GetListTable();
+    pListTable->DisposeNumPicBullets();
+
     uno::Reference<container::XEnumerationAccess> xEnumerationAccess(xCursor, uno::UNO_QUERY);
     if (xEnumerationAccess.is() && m_aTextAppendStack.size() == 1 )
     {
diff --git a/writerfilter/source/dmapper/NumberingManager.cxx b/writerfilter/source/dmapper/NumberingManager.cxx
index 000eb72..d34c0b9 100644
--- a/writerfilter/source/dmapper/NumberingManager.cxx
+++ b/writerfilter/source/dmapper/NumberingManager.cxx
@@ -699,6 +699,11 @@ ListsManager::ListsManager(DomainMapper& rDMapper,
 
 ListsManager::~ListsManager( )
 {
+    DisposeNumPicBullets();
+}
+
+void ListsManager::DisposeNumPicBullets( )
+{
     uno::Reference<drawing::XShape> xShape;
     for (std::vector<NumPicBullet::Pointer>::iterator it = m_aNumPicBullets.begin(); it != m_aNumPicBullets.end(); ++it)
     {
diff --git a/writerfilter/source/dmapper/NumberingManager.hxx b/writerfilter/source/dmapper/NumberingManager.hxx
index 3845d40..3eff441 100644
--- a/writerfilter/source/dmapper/NumberingManager.hxx
+++ b/writerfilter/source/dmapper/NumberingManager.hxx
@@ -263,6 +263,9 @@ public:
 
     // Mapping methods
     void CreateNumberingRules( );
+
+    // Dispose the NumPicBullets
+    void DisposeNumPicBullets( );
 };
 
 } }


More information about the Libreoffice-commits mailing list