[Libreoffice-commits] core.git: Branch 'libreoffice-4-4' - sw/source

Michael Stahl mstahl at redhat.com
Fri Apr 3 00:28:04 PDT 2015


 sw/source/uibase/uno/unotxdoc.cxx |   19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

New commits:
commit 4176d652a5aa31e6ea7a1be1798819ceb0d2b007
Author: Michael Stahl <mstahl at redhat.com>
Date:   Tue Mar 31 15:35:36 2015 +0200

    sw: fix obscure crash in SwXTextDocument::getSomething()
    
    xNumFmtAgg may be null if you directly call global ServiceManager's
    createInstanceWithContext("com.sun.star.text.TextDocument")
    
    Change-Id: Id619a3f5c9e3f8281f9ef72db132c64287e027c4
    (cherry picked from commit d360477d8740f29e2c2bc5f7bbd667df7cd26ee9)
    Reviewed-on: https://gerrit.libreoffice.org/15102
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/uibase/uno/unotxdoc.cxx b/sw/source/uibase/uno/unotxdoc.cxx
index 50dc5f8..7b0b82c 100644
--- a/sw/source/uibase/uno/unotxdoc.cxx
+++ b/sw/source/uibase/uno/unotxdoc.cxx
@@ -263,19 +263,16 @@ sal_Int64 SAL_CALL SwXTextDocument::getSomething( const Sequence< sal_Int8 >& rI
     }
 
     sal_Int64 nRet = SfxBaseModel::getSomething( rId );
-    if ( nRet )
+    if (nRet)
         return nRet;
-    else
-    {
-        GetNumberFormatter();
-        Any aNumTunnel = xNumFmtAgg->queryAggregation(cppu::UnoType<XUnoTunnel>::get());
-        Reference<XUnoTunnel> xNumTunnel;
-        aNumTunnel >>= xNumTunnel;
-        if(xNumTunnel.is())
-            return xNumTunnel->getSomething(rId);
-    }
 
-    return SfxBaseModel::getSomething( rId );
+    GetNumberFormatter();
+    if (!xNumFmtAgg.is()) // may happen if not valid or no SwDoc
+        return 0;
+    Any aNumTunnel = xNumFmtAgg->queryAggregation(cppu::UnoType<XUnoTunnel>::get());
+    Reference<XUnoTunnel> xNumTunnel;
+    aNumTunnel >>= xNumTunnel;
+    return (xNumTunnel.is()) ? xNumTunnel->getSomething(rId) : 0;
 }
 
 Any SAL_CALL SwXTextDocument::queryInterface( const uno::Type& rType ) throw(RuntimeException, std::exception)


More information about the Libreoffice-commits mailing list