[Libreoffice-commits] core.git: 2 commits - desktop/source sc/source

Michael Stahl mstahl at redhat.com
Mon Nov 16 04:14:50 PST 2015


 desktop/source/app/dispatchwatcher.cxx        |  126 +++++++++++++-------------
 sc/source/ui/Accessibility/AccessibleText.cxx |    6 +
 2 files changed, 72 insertions(+), 60 deletions(-)

New commits:
commit c994ce8a1d292b02e4c53f7b4061f3bbb840f874
Author: Michael Stahl <mstahl at redhat.com>
Date:   Mon Nov 16 12:55:06 2015 +0100

    desktop: stop --convert-to from creating some not requested ...
    
    ... file format by default if the requested filter does not exist.
    
    Much better to write an error message and do nothing.
    
    Change-Id: Ie5404772e7aae5751126bd4c2784b58177804448

diff --git a/desktop/source/app/dispatchwatcher.cxx b/desktop/source/app/dispatchwatcher.cxx
index 12da0b4..3239f12 100644
--- a/desktop/source/app/dispatchwatcher.cxx
+++ b/desktop/source/app/dispatchwatcher.cxx
@@ -128,7 +128,8 @@ const SfxFilter* impl_lookupExportFilterForUrl( const rtl::OUString& rUrl, const
     return pBestMatch;
 }
 
-const SfxFilter* impl_getExportFilterFromUrl( const rtl::OUString& rUrl, const rtl::OUString& rFactory )
+static const SfxFilter* impl_getExportFilterFromUrl(
+        const rtl::OUString& rUrl, const rtl::OUString& rFactory)
 {
 try
 {
@@ -146,10 +147,8 @@ try
         OUString aTempName;
         FileBase::getSystemPathFromFileURL( rUrl, aTempName );
         OString aSource = OUStringToOString ( aTempName, osl_getThreadTextEncoding() );
-        OString aFactory = OUStringToOString ( rFactory, osl_getThreadTextEncoding() );
-        std::cerr << "Error:  no export filter for " << aSource << " found, now using the default filter for " << aFactory << std::endl;
+        std::cerr << "Error: no export filter for " << aSource << " found, aborting." << std::endl;
 
-        pFilter = SfxFilter::GetDefaultFilterFromFactory( rFactory );
     }
 
     return pFilter;
@@ -539,75 +538,82 @@ bool DispatchWatcher::executeDispatchRequests( const DispatchList& aDispatchRequ
                                 aFilter = impl_GuessFilter( aOutFile, aDocService );
                             }
 
-                            sal_Int32 nFilterOptionsIndex = aFilter.indexOf( ':' );
-                            Sequence<PropertyValue> conversionProperties( 0 < nFilterOptionsIndex ? 3 : 2 );
-                            conversionProperties[0].Name = "Overwrite";
-                            conversionProperties[0].Value <<= sal_True;
-
-                            conversionProperties[1].Name = "FilterName";
-                            if( 0 < nFilterOptionsIndex )
+                            if (aFilter.isEmpty())
                             {
-                                conversionProperties[1].Value <<= aFilter.copy( 0, nFilterOptionsIndex );
-
-                                conversionProperties[2].Name = "FilterOptions";
-                                conversionProperties[2].Value <<= aFilter.copy( nFilterOptionsIndex+1 );
+                                std::cerr << "Error: no export filter" << std::endl;
                             }
                             else
                             {
-                                conversionProperties[1].Value <<= aFilter;
-                            }
+                                sal_Int32 nFilterOptionsIndex = aFilter.indexOf(':');
+                                Sequence<PropertyValue> conversionProperties( 0 < nFilterOptionsIndex ? 3 : 2 );
+                                conversionProperties[0].Name = "Overwrite";
+                                conversionProperties[0].Value <<= sal_True;
 
-                            OUString aTempName;
-                            FileBase::getSystemPathFromFileURL( aName, aTempName );
-                            OString aSource8 = OUStringToOString ( aTempName, osl_getThreadTextEncoding() );
-                            FileBase::getSystemPathFromFileURL( aOutFile, aTempName );
-                            OString aTargetURL8 = OUStringToOString(aTempName, osl_getThreadTextEncoding() );
-                            if( aDispatchRequest.aRequestType != REQUEST_CAT )
-                            {
-                                std::cout << "convert " << aSource8 << " -> " << aTargetURL8;
-                                std::cout << " using filter : " << OUStringToOString( aFilter, osl_getThreadTextEncoding() ) << std::endl;
-                                if( FStatHelper::IsDocument( aOutFile ) )
-                                    std::cout << "Overwriting: " << OUStringToOString( aTempName, osl_getThreadTextEncoding() ) << std::endl ;
-                            }
-                            try
-                            {
-                                xStorable->storeToURL( aOutFile, conversionProperties );
-                            }
-                            catch (const Exception& rException)
-                            {
-                                std::cerr << "Error: Please verify input parameters...";
-                                if (!rException.Message.isEmpty())
-                                    std::cerr << " (" << rException.Message << ")";
-                                std::cerr << std::endl;
-                            }
-
-                            if( aDispatchRequest.aRequestType == REQUEST_CAT )
-                            {
-                                osl::File aFile( fileForCat );
-                                osl::File::RC aRC = aFile.open( osl_File_OpenFlag_Read );
-                                if( aRC != osl::File::E_None )
+                                conversionProperties[1].Name = "FilterName";
+                                if( 0 < nFilterOptionsIndex )
                                 {
-                                    std::cerr << "Error: Cannot read from temp file" << std::endl;
+                                    conversionProperties[1].Value <<= aFilter.copy(0, nFilterOptionsIndex);
+
+                                    conversionProperties[2].Name = "FilterOptions";
+                                    conversionProperties[2].Value <<= aFilter.copy(nFilterOptionsIndex + 1);
                                 }
                                 else
                                 {
-                                    sal_Bool eof;
-                                    for( ;; )
+                                    conversionProperties[1].Value <<= aFilter;
+                                }
+
+                                OUString aTempName;
+                                FileBase::getSystemPathFromFileURL(aName, aTempName);
+                                OString aSource8 = OUStringToOString(aTempName, osl_getThreadTextEncoding());
+                                FileBase::getSystemPathFromFileURL(aOutFile, aTempName);
+                                OString aTargetURL8 = OUStringToOString(aTempName, osl_getThreadTextEncoding());
+                                if (aDispatchRequest.aRequestType != REQUEST_CAT)
+                                {
+                                    std::cout << "convert " << aSource8 << " -> " << aTargetURL8;
+                                    std::cout << " using filter : " << OUStringToOString(aFilter, osl_getThreadTextEncoding()) << std::endl;
+                                    if (FStatHelper::IsDocument(aOutFile))
+                                        std::cout << "Overwriting: " << OUStringToOString(aTempName, osl_getThreadTextEncoding()) << std::endl ;
+                                }
+                                try
+                                {
+                                    xStorable->storeToURL(aOutFile, conversionProperties);
+                                }
+                                catch (const Exception& rException)
+                                {
+                                    std::cerr << "Error: Please verify input parameters...";
+                                    if (!rException.Message.isEmpty())
+                                        std::cerr << " (" << rException.Message << ")";
+                                    std::cerr << std::endl;
+                                }
+
+                                if (aDispatchRequest.aRequestType == REQUEST_CAT)
+                                {
+                                    osl::File aFile(fileForCat);
+                                    osl::File::RC aRC = aFile.open(osl_File_OpenFlag_Read);
+                                    if (aRC != osl::File::E_None)
+                                    {
+                                        std::cerr << "Error: Cannot read from temp file" << std::endl;
+                                    }
+                                    else
                                     {
-                                        aFile.isEndOfFile( &eof );
-                                        if( eof )
-                                            break;
-                                        rtl::ByteSequence bseq;
-                                        aFile.readLine( bseq );
-                                        unsigned const char * aStr = reinterpret_cast< unsigned char const * >( bseq.getConstArray() );
-                                        for( sal_Int32 i = 0; i < bseq.getLength(); i++ )
+                                        sal_Bool eof;
+                                        for (;;)
                                         {
-                                            std::cout << aStr[i];
+                                            aFile.isEndOfFile( &eof );
+                                            if (eof)
+                                                break;
+                                            rtl::ByteSequence bseq;
+                                            aFile.readLine(bseq);
+                                            unsigned const char * aStr = reinterpret_cast<unsigned char const *>(bseq.getConstArray());
+                                            for (sal_Int32 i = 0; i < bseq.getLength(); ++i)
+                                            {
+                                                std::cout << aStr[i];
+                                            }
+                                            std::cout << std::endl;
                                         }
-                                        std::cout << std::endl;
+                                        aFile.close();
+                                        osl::File::remove(fileForCat);
                                     }
-                                    aFile.close();
-                                    osl::File::remove( fileForCat );
                                 }
                             }
                         }
commit 6b6eb1abed5b278803c61d678aa16046add8d6fb
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Nov 13 22:07:51 2015 +0100

    sc: add some assertions on ScAccessibleEditLineTextData
    
    JunitTest_sc_unoapi crashed when accessing a disposed ScTextWnd from
    ~ScAccessibleEditLineTextData(), but the ScTextWnd::dispose() would also
    call ScAccessibleEditLineTextData::Dispose() and clear mpWindow, so it
    seems impossible to observe a disposed ScTextWnd in the dtor?
    
    Change-Id: If571ee61d9a29601acb1de552ec1b9cc36d0d51e

diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx b/sc/source/ui/Accessibility/AccessibleText.cxx
index d18735d..13f23a3 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -1066,7 +1066,10 @@ ScAccessibleEditLineTextData::~ScAccessibleEditLineTextData()
     ScTextWnd* pTxtWnd = dynamic_cast< ScTextWnd* >(mpWindow.get());
 
     if (pTxtWnd)
+    {
+        assert(!pTxtWnd->IsDisposed());
         pTxtWnd->RemoveAccessibleTextData( *this );
+    }
 
     if (mbEditEngineCreated && mpEditEngine)
     {
@@ -1087,7 +1090,10 @@ void ScAccessibleEditLineTextData::Dispose()
     ScTextWnd* pTxtWnd = dynamic_cast<ScTextWnd*>(mpWindow.get());
 
     if (pTxtWnd)
+    {
+        assert(!pTxtWnd->IsDisposed());
         pTxtWnd->RemoveAccessibleTextData( *this );
+    }
 
     ResetEditMode();
     mpWindow = nullptr;


More information about the Libreoffice-commits mailing list