[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.1' - 10 commits - cppuhelper/source cui/source extras/source filter/source fpicker/source sd/source sw/qa sw/source unotools/source vcl/qa vcl/source writerfilter/source

Andras Timar andras.timar at collabora.com
Thu Nov 14 08:25:10 PST 2013


 cppuhelper/source/typemanager.cxx                         |    4 -
 cui/source/options/optgdlg.cxx                            |    7 ++
 extras/source/templates/layout/LushGreen.otp              |binary
 filter/source/flash/swffilter.cxx                         |   10 ++-
 fpicker/source/office/PlacesListBox.cxx                   |    4 -
 sd/source/ui/inc/slideshow.hxx                            |    5 +
 sd/source/ui/slideshow/slideshowimpl.cxx                  |    6 +-
 sd/source/ui/slideshow/slideshowimpl.hxx                  |    2 
 sd/source/ui/slidesorter/controller/SlsSlotManager.cxx    |   29 ----------
 sd/source/ui/view/drviewse.cxx                            |   40 +++++++++-----
 sd/source/ui/view/outlnvs2.cxx                            |   30 ----------
 sw/qa/extras/ooxmlexport/data/fdo70812.docx               |binary
 sw/qa/extras/ooxmlexport/ooxmlexport.cxx                  |    8 ++
 sw/source/core/edit/edtox.cxx                             |    3 -
 unotools/source/config/securityoptions.cxx                |    2 
 vcl/qa/cppunit/graphicfilter/data/emf/fail/fdo71307-2.emf |binary
 vcl/source/filter/wmf/enhwmf.cxx                          |    5 +
 writerfilter/source/dmapper/DomainMapper.cxx              |    9 ++-
 18 files changed, 76 insertions(+), 88 deletions(-)

New commits:
commit 42e77abe82f0e293da93e9ee1b707cf77b2c9153
Author: Andras Timar <andras.timar at collabora.com>
Date:   Tue Nov 12 20:55:23 2013 +0100

    fdo#46410 fix FindRange
    
    Change-Id: I7aada76bc2e8e767f36016eee5e57267b3718b13
    Reviewed-on: https://gerrit.libreoffice.org/6657
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/sw/source/core/edit/edtox.cxx b/sw/source/core/edit/edtox.cxx
index d4f8781..9cc5502 100644
--- a/sw/source/core/edit/edtox.cxx
+++ b/sw/source/core/edit/edtox.cxx
@@ -419,8 +419,7 @@ void SwEditShell::ApplyAutoMark()
                     // todo/mba: assuming that notes shouldn't be searched
                     sal_Bool bSearchInNotes = sal_False;
                     sal_uLong nRet = Find( aSearchOpt,  bSearchInNotes, DOCPOS_START, DOCPOS_END, bCancel,
-                                    (FindRanges)(FND_IN_SELALL|FND_IN_BODYONLY|FND_IN_OTHER),
-                                    sal_False );
+                                    (FindRanges)(FND_IN_SELALL), sal_False );
 
                     if(nRet)
                     {
commit bce409d06c0061caacc99f0033e752e4ebf39217
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Nov 12 14:56:43 2013 +0000

    Resolves: fdo#71307 out polygons are limited to 16bit point count
    
    Change-Id: I4dbe9145466d6d93ebd3dea7f4fe434c9ee3de19
    (cherry picked from commit cdd351b1487a8a97f481a9165d9cd361aaee2ca4)
    Reviewed-on: https://gerrit.libreoffice.org/6655
    Reviewed-by: David Tardon <dtardon at redhat.com>
    Tested-by: David Tardon <dtardon at redhat.com>

diff --git a/vcl/qa/cppunit/graphicfilter/data/emf/fail/fdo71307-2.emf b/vcl/qa/cppunit/graphicfilter/data/emf/fail/fdo71307-2.emf
new file mode 100644
index 0000000..b89db21
Binary files /dev/null and b/vcl/qa/cppunit/graphicfilter/data/emf/fail/fdo71307-2.emf differ
diff --git a/vcl/source/filter/wmf/enhwmf.cxx b/vcl/source/filter/wmf/enhwmf.cxx
index ad2a3a6..de8b780 100644
--- a/vcl/source/filter/wmf/enhwmf.cxx
+++ b/vcl/source/filter/wmf/enhwmf.cxx
@@ -344,6 +344,11 @@ void EnhWMFReader::ReadAndDrawPolygon(Drawer drawer, const sal_Bool skipFirst)
 template <class T>
 Polygon EnhWMFReader::ReadPolygon(sal_uInt32 nStartIndex, sal_uInt32 nPoints)
 {
+    bool bRecordOk = nPoints <= SAL_MAX_UINT16;
+    SAL_WARN_IF(!bRecordOk, "svtools.filter", "polygon record has more polygons than we can handle");
+    if (!bRecordOk)
+        return Polygon();
+
     Polygon aPolygon(nPoints);
     for (sal_uInt16 i = nStartIndex ; i < nPoints && pWMF->good(); i++ )
     {
commit 5974f69b72d6c872b79c4f3b43562cd7aa04c3e3
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Oct 22 12:20:16 2013 +0100

    Resolves: fdo#69975 honour custom show settings
    
    if a custom show is set, then don't override it with
    current/first page, just accept it
    
    Change-Id: Icd04711028b3e11a576df6cd325ddb0db8974111
    (cherry picked from commit 438f5cf4229dafe2100e36d818b05535091054d7)
    
    merge all three ShowSlideShow impls together
    
    Change-Id: If82f6313b258a79d59fbe34ab7846db5f9f45f76
    (cherry picked from commit 368e94ce33bb4de1d2c0348082a349331a17f332)
    
    bStartWithActualSlide is always false
    
    (cherry picked from commit a1b0b68c0f1fe2467cddf021e09123085d043de2)
    
    Conflicts:
    	sd/source/ui/slideshow/slideshowimpl.cxx
    	sd/source/ui/slideshow/slideshowimpl.hxx
    
    Change-Id: Icf61858730e2576439fdc7bdd1c8a911f2b34bd7
    Reviewed-on: https://gerrit.libreoffice.org/6374
    Reviewed-by: David Tardon <dtardon at redhat.com>
    Tested-by: David Tardon <dtardon at redhat.com>

diff --git a/sd/source/ui/inc/slideshow.hxx b/sd/source/ui/inc/slideshow.hxx
index a309c82..be44a51 100644
--- a/sd/source/ui/inc/slideshow.hxx
+++ b/sd/source/ui/inc/slideshow.hxx
@@ -214,6 +214,11 @@ private:
     sal_Int32   mnInPlaceConfigEvent;
 };
 
+namespace slideshowhelp
+{
+    void ShowSlideShow(SfxRequest& rReq, SdDrawDocument &rDoc);
+}
+
 }
 
 #endif /* _SD_SLIDESHOW_HXX */
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx
index b096dc4..6fbd862 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -974,7 +974,7 @@ bool SlideshowImpl::startShow( PresentationSettingsEx* pPresSettings )
         }
 
         // build page list
-        createSlideList( maPresSettings.mbAll, false, aPresSlide );
+        createSlideList( maPresSettings.mbAll, aPresSlide );
 
         // remember Slide number from where the show was started
         if( pStartPage )
@@ -2449,7 +2449,7 @@ Reference< XSlideShow > SlideshowImpl::createSlideShow() const
 
 // ---------------------------------------------------------
 
-void SlideshowImpl::createSlideList( bool bAll, bool bStartWithActualSlide, const String& rPresSlide )
+void SlideshowImpl::createSlideList( bool bAll, const String& rPresSlide )
 {
     const long nSlideCount = mpDoc->GetSdPageCount( PK_STANDARD );
 
@@ -2457,7 +2457,7 @@ void SlideshowImpl::createSlideList( bool bAll, bool bStartWithActualSlide, cons
     {
         SdCustomShow*   pCustomShow;
 
-        if( !bStartWithActualSlide && mpDoc->GetCustomShowList() && maPresSettings.mbCustomShow )
+        if( mpDoc->GetCustomShowList() && maPresSettings.mbCustomShow )
             pCustomShow = mpDoc->GetCustomShowList()->GetCurObject();
         else
             pCustomShow = NULL;
diff --git a/sd/source/ui/slideshow/slideshowimpl.hxx b/sd/source/ui/slideshow/slideshowimpl.hxx
index 8be006b..89db0b2 100644
--- a/sd/source/ui/slideshow/slideshowimpl.hxx
+++ b/sd/source/ui/slideshow/slideshowimpl.hxx
@@ -265,7 +265,7 @@ private:
 
     double update();
 
-    void createSlideList( bool bAll, bool bStartWithActualSlide, const String& rPresSlide );
+    void createSlideList( bool bAll, const String& rPresSlide );
 
     void displayCurrentSlide (const bool bSkipAllMainSequenceEffects = false);
 
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index 6b9c690..ecb7761 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -883,34 +883,7 @@ void SlotManager::GetStatusBarState (SfxItemSet& rSet)
 
 void SlotManager::ShowSlideShow( SfxRequest& rReq)
 {
-    Reference< XPresentation2 > xPresentation( mrSlideSorter.GetModel().GetDocument()->getPresentation() );
-    if( xPresentation.is() )
-    {
-        if( ( SID_REHEARSE_TIMINGS != rReq.GetSlot() ) )
-        {
-            if( (SID_PRESENTATION == rReq.GetSlot() ) )
-            {
-                Sequence< PropertyValue > aArguments(1);
-                PropertyValue aPage;
-                OUString sValue("0");
-
-                aPage.Name = "FirstPage";
-                aPage.Value <<= sValue;
-
-                aArguments[0] = aPage;
-
-                xPresentation->startWithArguments( aArguments );
-            }
-            else
-            {
-                xPresentation->start();
-            }
-        }
-        else
-        {
-            xPresentation->rehearseTimings();
-        }
-    }
+    slideshowhelp::ShowSlideShow(rReq, *mrSlideSorter.GetModel().GetDocument());
 }
 
 void SlotManager::RenameSlide (void)
diff --git a/sd/source/ui/view/drviewse.cxx b/sd/source/ui/view/drviewse.cxx
index 36d8f78..408a090 100644
--- a/sd/source/ui/view/drviewse.cxx
+++ b/sd/source/ui/view/drviewse.cxx
@@ -1646,15 +1646,32 @@ void DrawViewShell::ShowUIControls (bool bVisible)
     maTabControl.Show (bVisible);
 }
 
-void DrawViewShell::ShowSlideShow(SfxRequest& rReq)
+namespace slideshowhelp
 {
-    Reference< XPresentation2 > xPresentation( GetDoc()->getPresentation() );
-    if( xPresentation.is() )
+    void ShowSlideShow(SfxRequest& rReq, SdDrawDocument &rDoc)
     {
-        if( ( SID_REHEARSE_TIMINGS != rReq.GetSlot() ) )
+        Reference< XPresentation2 > xPresentation( rDoc.getPresentation() );
+        if( xPresentation.is() )
         {
-            if( (SID_PRESENTATION == rReq.GetSlot() ) )
+            if (SID_REHEARSE_TIMINGS == rReq.GetSlot())
+                xPresentation->rehearseTimings();
+            else if (rDoc.getPresentationSettings().mbCustomShow)
+            {
+                //fdo#69975 if a custom show has been set, then
+                //use it whether or not we've been asked to
+                //start from the current or first slide
+                xPresentation->start();
+            }
+            else if (SID_PRESENTATION_CURRENT_SLIDE == rReq.GetSlot())
             {
+                //If there is no custom show set, start will automatically
+                //start at the current page
+                xPresentation->start();
+            }
+            else
+            {
+                //Start at page 0, this would blow away any custom
+                //show settings if any were set
                 Sequence< PropertyValue > aArguments(1);
                 PropertyValue aPage;
                 OUString sValue("0");
@@ -1666,18 +1683,15 @@ void DrawViewShell::ShowSlideShow(SfxRequest& rReq)
 
                 xPresentation->startWithArguments( aArguments );
             }
-            else
-            {
-                xPresentation->start();
-            }
-        }
-        else
-        {
-            xPresentation->rehearseTimings();
         }
     }
 }
 
+void DrawViewShell::ShowSlideShow(SfxRequest& rReq)
+{
+    slideshowhelp::ShowSlideShow(rReq, *GetDoc());
+}
+
 void DrawViewShell::StopSlideShow (bool /*bCloseFrame*/)
 {
     Reference< XPresentation2 > xPresentation( GetDoc()->getPresentation() );
diff --git a/sd/source/ui/view/outlnvs2.cxx b/sd/source/ui/view/outlnvs2.cxx
index 87086ac..c3aa7d7 100644
--- a/sd/source/ui/view/outlnvs2.cxx
+++ b/sd/source/ui/view/outlnvs2.cxx
@@ -63,6 +63,7 @@
 #include "sdabstdlg.hxx"
 #include "framework/FrameworkHelper.hxx"
 #include "DrawViewShell.hxx"
+#include "slideshow.hxx"
 #include <boost/scoped_ptr.hpp>
 
 using namespace ::com::sun::star::uno;
@@ -334,34 +335,7 @@ void OutlineViewShell::FuTemporary(SfxRequest &rReq)
 
 void OutlineViewShell::ShowSlideShow(SfxRequest& rReq)
 {
-    Reference< XPresentation2 > xPresentation( GetDoc()->getPresentation() );
-    if( xPresentation.is() )
-    {
-        if( ( SID_REHEARSE_TIMINGS != rReq.GetSlot() ) )
-        {
-            if( (SID_PRESENTATION == rReq.GetSlot() ) )
-            {
-                Sequence< PropertyValue > aArguments(1);
-                PropertyValue aPage;
-                OUString sValue("0");
-
-                aPage.Name = "FirstPage";
-                aPage.Value <<= sValue;
-
-                aArguments[0] = aPage;
-
-                xPresentation->startWithArguments( aArguments );
-            }
-            else
-            {
-                xPresentation->start();
-            }
-        }
-        else
-        {
-            xPresentation->rehearseTimings();
-        }
-    }
+    slideshowhelp::ShowSlideShow(rReq, *GetDoc());
 }
 
 void OutlineViewShell::FuTemporaryModify(SfxRequest &rReq)
commit de9f4fc5ca9370391e6c94c407c992ec138b8c29
Author: Andras Timar <andras.timar at collabora.com>
Date:   Wed Nov 13 10:23:59 2013 +0100

    fdo#59256 hide this option when experimental features are disabled
    
    GTK print dialog is experimental, the checkbox has no effect, if
    experimental features are disabled.
    On Mac OS X LibreOffice cannot use native print dialog at all.
    
    Change-Id: I7497f1da0ec74b9067675e34eb4314b7a4616f06
    Reviewed-on: https://gerrit.libreoffice.org/6664
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx
index 1ae32e1..fbb1cf7 100644
--- a/cui/source/options/optgdlg.cxx
+++ b/cui/source/options/optgdlg.cxx
@@ -187,8 +187,13 @@ OfaMiscTabPage::OfaMiscTabPage(Window* pParent, const SfxItemSet& rSet)
     get(m_pExtHelpCB, "exthelp");
     if (!lcl_HasSystemFilePicker())
         get<VclContainer>("filedlgframe")->Hide();
-#if !defined(MACOSX) && ! ENABLE_GTK
+#if ! ENABLE_GTK
     get<VclContainer>("printdlgframe")->Hide();
+#else
+    if (!SvtMiscOptions().IsExperimentalMode())
+    {
+        get<VclContainer>("printdlgframe")->Hide();
+    }
 #endif
     get(m_pFileDlgCB, "filedlg");
     get(m_pPrintDlgCB, "printdlg");
commit c555fe6978a1a4300d13da7661f5b4f7c67efeb7
Author: Andras Timar <andras.timar at collabora.com>
Date:   Wed Nov 13 11:26:47 2013 +0100

    fdo#69046 fix discolored thumbnail and background image of LushGreen template
    
    Change-Id: I71307b9f5d973b8282b793df1d71816fe002b541
    Reviewed-on: https://gerrit.libreoffice.org/6667
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/extras/source/templates/layout/LushGreen.otp b/extras/source/templates/layout/LushGreen.otp
index 991bad9..936ae04 100644
Binary files a/extras/source/templates/layout/LushGreen.otp and b/extras/source/templates/layout/LushGreen.otp differ
commit 27a9a76d0a54d5cdd4737363b4b64452cb14615d
Author: Andras Timar <andras.timar at collabora.com>
Date:   Wed Nov 13 12:58:09 2013 +0100

    fdo#59542 smaller +/- buttons will not be truncated at the bottom
    
    Change-Id: If937d72e5b10bfbf055cf5b9909d50bbf5ddac81
    Reviewed-on: https://gerrit.libreoffice.org/6668
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/fpicker/source/office/PlacesListBox.cxx b/fpicker/source/office/PlacesListBox.cxx
index 99bb9e1..c3b3818 100644
--- a/fpicker/source/office/PlacesListBox.cxx
+++ b/fpicker/source/office/PlacesListBox.cxx
@@ -71,12 +71,12 @@ PlacesListBox::PlacesListBox( SvtFileDialog* pFileDlg, const OUString& rTitle, c
 
     mpAddBtn = new ImageButton( this, 0 );
     mpAddBtn->SetText( OUString( "+" ) );
-    mpAddBtn->SetPosSizePixel( Point( 0, 0 ), Size( 24, 24 ) );
+    mpAddBtn->SetPosSizePixel( Point( 0, 0 ), Size( 22, 22 ) );
     mpAddBtn->Show();
 
     mpDelBtn = new ImageButton( this, 0 );
     mpDelBtn->SetText( OUString( "-" ) );
-    mpDelBtn->SetPosSizePixel( Point( 0, 0 ), Size( 24, 24 ) );
+    mpDelBtn->SetPosSizePixel( Point( 0, 0 ), Size( 22, 22 ) );
     mpDelBtn->Show();
 }
 
commit 6c1ce2b33ba2c279542fe54b453bebbf287faf20
Author: Laurent Balland-Poirier <laurent.balland-poirier at laposte.net>
Date:   Wed Nov 6 17:57:09 2013 +0100

    Resolves: fdo#71309 Export SWF with Multiple files crashes
    
    In case of unamed file, creation of sPresentationName crash.
    This patch forces creation of empty name
    
    Change-Id: I1b5319eb945f1959f2ad3c703365539508521861
    Reviewed-on: https://gerrit.libreoffice.org/6598
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 2cf96ae334491733a2bdbeb003da6e49df19cc9f)

diff --git a/filter/source/flash/swffilter.cxx b/filter/source/flash/swffilter.cxx
index e08667e..4d0ace8 100644
--- a/filter/source/flash/swffilter.cxx
+++ b/filter/source/flash/swffilter.cxx
@@ -285,16 +285,20 @@ sal_Bool FlashExportFilter::ExportAsMultipleFiles(const Sequence< PropertyValue
 
     // AS: sPath is the parent directory, where everything else exists (like the sxi,
     //  the -swf-files folder, the -audio files, etc.
-    int lastslash = sOriginalPath.lastIndexOf('/');
+    sal_Int32 lastslash = sOriginalPath.lastIndexOf('/');
     OUString sPath( sOriginalPath.copy(0, lastslash) );
 
     OUString sPresentation(xStorable->getLocation());
 
     lastslash = sPresentation.lastIndexOf('/') + 1;
-    int lastdot = sPresentation.lastIndexOf('.');
+    sal_Int32 lastdot = sPresentation.lastIndexOf('.');
 
     // AS: The name of the presentation, without 3 character extension.
-    OUString sPresentationName = sPresentation.copy(lastslash, lastdot - lastslash);
+    OUString sPresentationName;
+    if (lastdot < 0)  // fdo#71309 in case file has no name
+        sPresentationName = sPresentation.copy(lastslash);
+    else
+        sPresentationName = sPresentation.copy(lastslash, lastdot - lastslash);
 
     OUString fullpath, swfdirpath, backgroundfilename, objectsfilename;
 
commit 9726003f77361bd5b14d05018d287d408d857b26
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Nov 11 13:18:49 2013 +0100

    Don't call Manager::addProvider(null) upon optional NoSuchFileException
    
    Change-Id: I62e953c886886158f227362fef7048459192217b
    (cherry picked from commit 49fa300703643a2e49df01944f1b1299138010c7)
    Reviewed-on: https://gerrit.libreoffice.org/6637
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/cppuhelper/source/typemanager.cxx b/cppuhelper/source/typemanager.cxx
index 672e377..08c6fb9 100644
--- a/cppuhelper/source/typemanager.cxx
+++ b/cppuhelper/source/typemanager.cxx
@@ -2141,9 +2141,8 @@ void cppuhelper::TypeManager::readRdbDirectory(
 void cppuhelper::TypeManager::readRdbFile(
     rtl::OUString const & uri, bool optional)
 {
-    rtl::Reference< unoidl::Provider > prov;
     try {
-        prov = unoidl::loadProvider(manager_, uri);
+        manager_->addProvider(unoidl::loadProvider(manager_, uri));
     } catch (unoidl::NoSuchFileException &) {
         if (!optional) {
             throw css::uno::DeploymentException(
@@ -2157,7 +2156,6 @@ void cppuhelper::TypeManager::readRdbFile(
                  + e.getDetail()),
                 static_cast< cppu::OWeakObject * >(this));
     }
-    manager_->addProvider(prov);
 }
 
 css::uno::Any cppuhelper::TypeManager::getSequenceType(
commit 70de64599515cecd87a2bd8df55957c7e8c6cf9e
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Mon Nov 11 10:31:33 2013 +0100

    Fix CompareIgnoreCaseToAscii -> matchIgnoreAsciiCaseAsciiL regression
    
    ...introduced with 19ebc215d19ed9c7c5c6fdabf2f4acd5af02cbc4 "INTEGRATION: CWS
    ineturl1: #i34006# modify INetURLObject to use rtl::OUString and
    rtl::OUStringBuffer," where String::CompareIgnoreCaseToAscii returns
    StringCompare but rtl::OUString::matchIgnoreAsciiCaseAsciiL return sal_Bool.
    
    Change-Id: I009bd6f606850f4e971fda4a1b468e7b0d102685
    Reviewed-on: https://gerrit.libreoffice.org/6635
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/unotools/source/config/securityoptions.cxx b/unotools/source/config/securityoptions.cxx
index cd0e6c7..153004f 100644
--- a/unotools/source/config/securityoptions.cxx
+++ b/unotools/source/config/securityoptions.cxx
@@ -880,7 +880,7 @@ sal_Bool SvtSecurityOptions_Impl::IsSecureURL(  const   OUString&   sURL    ,
 
     // All other URLs must checked in combination with referer and internal information about security
     if ( (aProtocol != INET_PROT_MACRO && aProtocol !=  INET_PROT_SLOT) ||
-         aURL.GetMainURL( INetURLObject::NO_DECODE ).matchIgnoreAsciiCaseAsciiL( "macro:///", 9 ) == 0)
+         aURL.GetMainURL( INetURLObject::NO_DECODE ).matchIgnoreAsciiCaseAsciiL( "macro:///", 9 ) )
     {
         // security check only for "macro" ( without app basic ) or "slot" protocols
         bState = sal_True;
commit 802caf4030f893cf4f8a7dda29236a1491800f6a
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Thu Nov 7 16:01:25 2013 +0100

    fdo#70812 writerfilter: check for nullptr after dynamic_cast
    
    Happens when we set "no number" in the default para style, which is
    already the case for Writer anyway.
    
    (cherry picked from commit 660d761bfeea81c0b76cf08b4c961a2ad8d09a06)
    
    Conflicts:
    	sw/qa/extras/ooxmlexport/ooxmlexport.cxx
    
    Change-Id: I3b262e633e52e4aae039c55d6edb744e36f0f354
    Reviewed-on: https://gerrit.libreoffice.org/6636
    Reviewed-by: Jan Holesovsky <kendy at collabora.com>
    Tested-by: Jan Holesovsky <kendy at collabora.com>

diff --git a/sw/qa/extras/ooxmlexport/data/fdo70812.docx b/sw/qa/extras/ooxmlexport/data/fdo70812.docx
new file mode 100644
index 0000000..b9b5d52
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/fdo70812.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 7983360..c1bb45e 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -76,6 +76,7 @@ public:
     void testFdo60990();
     void testBnc834035();
     void testCp1000015();
+    void testFdo70812();
 
     CPPUNIT_TEST_SUITE(Test);
 #if !defined(MACOSX) && !defined(WNT)
@@ -136,6 +137,7 @@ void Test::run()
         {"fdo60990.odt", &Test::testFdo60990},
         {"bnc834035.odt", &Test::testBnc834035},
         {"cp1000015.odt", &Test::testCp1000015},
+        {"fdo70812.docx", &Test::testFdo70812},
     };
     // Don't test the first import of these, for some reason those tests fail
     const char* aBlacklist[] = {
@@ -781,6 +783,12 @@ void Test::testCp1000015()
     getParagraph(2, "http://www.google.com/");
 }
 
+void Test::testFdo70812()
+{
+    // Import just crashed.
+    getParagraph(1, "Sample pages document.");
+}
+
 CPPUNIT_TEST_SUITE_REGISTRATION(Test);
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 46ceef3..33c1ad1 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -1564,7 +1564,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType
             {
                 //style sheets cannot have a numbering rule attached
                 StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
-                pStyleSheetPropertyMap->SetListLevel( (sal_Int16)nIntValue );
+                if (pStyleSheetPropertyMap)
+                    pStyleSheetPropertyMap->SetListLevel( (sal_Int16)nIntValue );
             }
             else
                 rContext->Insert( PROP_NUMBERING_LEVEL, true, uno::makeAny( (sal_Int16)nIntValue ));
@@ -1578,7 +1579,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType
             {
                 //style sheets cannot have a numbering rule attached
                 StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
-                pStyleSheetPropertyMap->SetListId( nIntValue );
+                if (pStyleSheetPropertyMap)
+                    pStyleSheetPropertyMap->SetListId( nIntValue );
             }
             if( pList.get( ) )
             {
@@ -1596,7 +1598,8 @@ void DomainMapper::sprmWithProps( Sprm& rSprm, PropertyMapPtr rContext, SprmType
                 {
                     // set the number id for AbstractNum references
                     StyleSheetPropertyMap* pStyleSheetPropertyMap = dynamic_cast< StyleSheetPropertyMap* >( rContext.get() );
-                    pStyleSheetPropertyMap->SetNumId( nIntValue );
+                    if (pStyleSheetPropertyMap)
+                        pStyleSheetPropertyMap->SetNumId( nIntValue );
                 }
                 else
                 {


More information about the Libreoffice-commits mailing list