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

Tushar Bende tushar.bende at synerzip.com
Thu Jun 5 01:29:39 PDT 2014


 sw/qa/extras/ooxmlimport/data/fdo79535.docx |binary
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx    |   11 +++++++++++
 sw/source/core/doc/docredln.cxx             |    3 ++-
 3 files changed, 13 insertions(+), 1 deletion(-)

New commits:
commit 8fcd4bf323bc3390e366229d549641444b5a3e9a
Author: Tushar Bende <tushar.bende at synerzip.com>
Date:   Wed Jun 4 15:04:18 2014 +0530

    fdo#79535 :LO writer crash while Opening some document.
    
    Problem Description : While setting ExtraData for Redline LO calls SwRangeRedline::SetExtraData() with
    argument of type SwRedlineExtraData_FormattingChanges* which contains SfxItemSet*
    In function SwRedlineExtraData_FormattingChanges() without Null checking SfxItemSet*,
    LO was trying to get rCpy.pSet->Count() which was the reason for segmentation fault
    while opening some documents in LO.
    
    Added Null check before accessing a pointer.
    
    Change-Id: I33299d2be2777ab6a8af0621595c9453145f1069
    Reviewed-on: https://gerrit.libreoffice.org/9647
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/qa/extras/ooxmlimport/data/fdo79535.docx b/sw/qa/extras/ooxmlimport/data/fdo79535.docx
new file mode 100644
index 0000000..64aab18
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/fdo79535.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
index 14aa543..f003f33 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
@@ -2153,6 +2153,17 @@ DECLARE_OOXMLIMPORT_TEST(testFdo78883, "fdo78883.docx")
     CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
 }
 
+DECLARE_OOXMLIMPORT_TEST(testFdo79535, "fdo79535.docx")
+{
+    // fdo#79535 : LO was crashing while opening document
+    // Checking there is a single page after loading a doc successfully in LO.
+    uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+    uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+    uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+    xCursor->jumpToLastPage();
+    CPPUNIT_ASSERT_EQUAL(sal_Int16(1), xCursor->getPage());
+}
+
 DECLARE_OOXMLIMPORT_TEST(testBnc875718, "bnc875718.docx")
 {
     // The frame in the footer must not accidentally end up in the document body.
diff --git a/sw/source/core/doc/docredln.cxx b/sw/source/core/doc/docredln.cxx
index 64887a1..cb1520a 100644
--- a/sw/source/core/doc/docredln.cxx
+++ b/sw/source/core/doc/docredln.cxx
@@ -3204,7 +3204,8 @@ SwRedlineExtraData_FormattingChanges::SwRedlineExtraData_FormattingChanges( cons
 SwRedlineExtraData_FormattingChanges::SwRedlineExtraData_FormattingChanges( const SwRedlineExtraData_FormattingChanges& rCpy )
     : SwRedlineExtraData()
 {
-    if( rCpy.pSet->Count() )
+    // Checking pointer pSet before accessing it for Count
+    if( rCpy.pSet && rCpy.pSet->Count() )
     {
         pSet = new SfxItemSet( *(rCpy.pSet) );
     }


More information about the Libreoffice-commits mailing list