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.man...@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 <vmik...@collabora.co.uk>
    Tested-by: Miklos Vajna <vmik...@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( );
 };
 
 } }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to