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

Mike Kaganski (via logerrit) logerrit at kemper.freedesktop.org
Mon Apr 29 07:32:04 UTC 2019


 desktop/source/lib/init.cxx |  253 ++++++++++++++++++--------------------------
 1 file changed, 104 insertions(+), 149 deletions(-)

New commits:
commit a5c0cf416faff2a4b273ac526a83c9c2575a5d51
Author:     Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Sun Apr 28 23:29:49 2019 +0300
Commit:     Miklos Vajna <vmiklos at collabora.com>
CommitDate: Mon Apr 29 09:31:11 2019 +0200

    tdf#120703 PVS: dereference before nullptr check
    
    Use a function to consistently check if gImpl is valid before assigning last
    exception message.
    
    V595 The 'gImpl' pointer was utilized before it was verified against nullptr.
         Check lines: 2673, 2683.
    
    Change-Id: I18fc0d632c84f37b05e9d1c3c83689e6eaa6f66c
    Reviewed-on: https://gerrit.libreoffice.org/71488
    Tested-by: Jenkins
    Reviewed-by: Miklos Vajna <vmiklos at collabora.com>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 937331376024..497c31b34101 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -163,6 +163,12 @@ static LibLibreOffice_Impl *gImpl = nullptr;
 static std::weak_ptr< LibreOfficeKitClass > gOfficeClass;
 static std::weak_ptr< LibreOfficeKitDocumentClass > gDocumentClass;
 
+static void SetLastExceptionMsg(const OUString& s = OUString())
+{
+    if (gImpl)
+        gImpl->maLastExceptionMsg = s;
+}
+
 struct ExtensionMap
 {
     const char *extn;
@@ -1872,8 +1878,7 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const cha
     comphelper::ProfileZone aZone("doc_saveAs");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis);
 
@@ -1881,7 +1886,7 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const cha
     OUString aURL(getAbsoluteURL(sUrl));
     if (aURL.isEmpty())
     {
-        gImpl->maLastExceptionMsg = "Filename to save to was not provided.";
+        SetLastExceptionMsg("Filename to save to was not provided.");
         SAL_INFO("lok", "URL for save is empty");
         return false;
     }
@@ -1920,7 +1925,7 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const cha
             }
             else
             {
-                gImpl->maLastExceptionMsg = "input filename without a suffix";
+                SetLastExceptionMsg("input filename without a suffix");
                 return false;
             }
         }
@@ -1936,7 +1941,7 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const cha
         }
         if (aFilterName.isEmpty())
         {
-            gImpl->maLastExceptionMsg = "no output filter found for provided suffix";
+            SetLastExceptionMsg("no output filter found for provided suffix");
             return false;
         }
 
@@ -2016,7 +2021,7 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const cha
     }
     catch (const uno::Exception& exception)
     {
-        gImpl->maLastExceptionMsg = "exception: " + exception.Message;
+        SetLastExceptionMsg("exception: " + exception.Message);
     }
     return false;
 }
@@ -2024,8 +2029,7 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const cha
 static void doc_iniUnoCommands ()
 {
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     OUString sUnoCommands[] =
     {
@@ -2173,8 +2177,7 @@ static int doc_getDocumentType (LibreOfficeKitDocument* pThis)
     comphelper::ProfileZone aZone("doc_getDocumentType");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis);
 
@@ -2200,12 +2203,12 @@ static int doc_getDocumentType (LibreOfficeKitDocument* pThis)
         }
         else
         {
-            gImpl->maLastExceptionMsg = "unknown document type";
+            SetLastExceptionMsg("unknown document type");
         }
     }
     catch (const uno::Exception& exception)
     {
-        gImpl->maLastExceptionMsg = "exception: " + exception.Message;
+        SetLastExceptionMsg("exception: " + exception.Message);
     }
     return LOK_DOCTYPE_OTHER;
 }
@@ -2219,7 +2222,7 @@ static int doc_getParts (LibreOfficeKitDocument* pThis)
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return 0;
     }
 
@@ -2231,13 +2234,12 @@ static int doc_getPart (LibreOfficeKitDocument* pThis)
     comphelper::ProfileZone aZone("doc_getPart");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return 0;
     }
 
@@ -2249,13 +2251,12 @@ static void doc_setPart(LibreOfficeKitDocument* pThis, int nPart)
     comphelper::ProfileZone aZone("doc_setPart");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -2270,7 +2271,7 @@ static char* doc_getPartInfo(LibreOfficeKitDocument* pThis, int nPart)
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
 
@@ -2288,13 +2289,12 @@ static char* doc_getPartPageRectangles(LibreOfficeKitDocument* pThis)
     comphelper::ProfileZone aZone("doc_getPartPageRectangles");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
 
@@ -2312,13 +2312,12 @@ static char* doc_getPartName(LibreOfficeKitDocument* pThis, int nPart)
     comphelper::ProfileZone aZone("doc_getPartName");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
 
@@ -2336,13 +2335,12 @@ static char* doc_getPartHash(LibreOfficeKitDocument* pThis, int nPart)
     comphelper::ProfileZone aZone("doc_getPartHash");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
 
@@ -2361,13 +2359,12 @@ static void doc_setPartMode(LibreOfficeKitDocument* pThis,
     comphelper::ProfileZone aZone("doc_setPartMode");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -2411,8 +2408,7 @@ static void doc_paintTile(LibreOfficeKitDocument* pThis,
     comphelper::ProfileZone aZone("doc_paintTile");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     SAL_INFO( "lok.tiledrendering", "paintTile: painting [" << nTileWidth << "x" << nTileHeight <<
               "]@(" << nTilePosX << ", " << nTilePosY << ") to [" <<
@@ -2421,7 +2417,7 @@ static void doc_paintTile(LibreOfficeKitDocument* pThis,
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -2506,8 +2502,7 @@ static void doc_paintTileToCGContext(LibreOfficeKitDocument* pThis,
                                      const int nTileWidth, const int nTileHeight)
 {
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     SAL_INFO( "lok.tiledrendering", "paintTileToCGContext: painting [" << nTileWidth << "x" << nTileHeight <<
               "]@(" << nTilePosX << ", " << nTilePosY << ") to [" <<
@@ -2516,7 +2511,7 @@ static void doc_paintTileToCGContext(LibreOfficeKitDocument* pThis,
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -2546,8 +2541,7 @@ static void doc_paintPartTile(LibreOfficeKitDocument* pThis,
     comphelper::ProfileZone aZone("doc_paintPartTile");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     SAL_INFO( "lok.tiledrendering", "paintPartTile: painting @ " << nPart << " ["
                << nTileWidth << "x" << nTileHeight << "]@("
@@ -2631,8 +2625,7 @@ static void doc_paintPartTile(LibreOfficeKitDocument* pThis,
 
 static int doc_getTileMode(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pThis*/)
 {
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
     return LOK_TILEMODE_BGRA;
 }
 
@@ -2643,8 +2636,7 @@ static void doc_getDocumentSize(LibreOfficeKitDocument* pThis,
     comphelper::ProfileZone aZone("doc_getDocumentSize");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (pDoc)
@@ -2655,7 +2647,7 @@ static void doc_getDocumentSize(LibreOfficeKitDocument* pThis,
     }
     else
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
     }
 }
 
@@ -2665,8 +2657,7 @@ static void doc_initializeForRendering(LibreOfficeKitDocument* pThis,
     comphelper::ProfileZone aZone("doc_initializeForRendering");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (pDoc)
@@ -2682,8 +2673,7 @@ static void doc_registerCallback(LibreOfficeKitDocument* pThis,
                                  void* pData)
 {
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     LibLODocument_Impl* pDocument = static_cast<LibLODocument_Impl*>(pThis);
 
@@ -2737,12 +2727,11 @@ static void doc_registerCallback(LibreOfficeKitDocument* pThis,
 /// Returns the JSON representation of all the comments in the document
 static char* getPostIts(LibreOfficeKitDocument* pThis)
 {
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
     OUString aComments = pDoc->getPostIts();
@@ -2752,12 +2741,11 @@ static char* getPostIts(LibreOfficeKitDocument* pThis)
 /// Returns the JSON representation of the positions of all the comments in the document
 static char* getPostItsPos(LibreOfficeKitDocument* pThis)
 {
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
     OUString aComments = pDoc->getPostItsPos();
@@ -2766,12 +2754,11 @@ static char* getPostItsPos(LibreOfficeKitDocument* pThis)
 
 static char* getRulerState(LibreOfficeKitDocument* pThis)
 {
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
     OUString state = pDoc->getRulerState();
@@ -2783,13 +2770,12 @@ static void doc_postKeyEvent(LibreOfficeKitDocument* pThis, int nType, int nChar
     comphelper::ProfileZone aZone("doc_postKeyEvent");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -2807,7 +2793,7 @@ static void doc_postWindowExtTextInputEvent(LibreOfficeKitDocument* pThis, unsig
         ITiledRenderable* pDoc = getTiledRenderable(pThis);
         if (!pDoc)
         {
-            gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+            SetLastExceptionMsg("Document doesn't support tiled rendering");
             return;
         }
         pWindow = pDoc->getDocWindow();
@@ -2819,7 +2805,7 @@ static void doc_postWindowExtTextInputEvent(LibreOfficeKitDocument* pThis, unsig
 
     if (!pWindow)
     {
-        gImpl->maLastExceptionMsg = "No window found for window id: " + OUString::number(nWindowId);
+        SetLastExceptionMsg("No window found for window id: " + OUString::number(nWindowId));
         return;
     }
 
@@ -2843,13 +2829,12 @@ static void doc_postWindowKeyEvent(LibreOfficeKitDocument* /*pThis*/, unsigned n
     comphelper::ProfileZone aZone("doc_postWindowKeyEvent");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     VclPtr<Window> pWindow = vcl::Window::FindLOKWindow(nLOKWindowId);
     if (!pWindow)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support dialog rendering, or window not found.";
+        SetLastExceptionMsg("Document doesn't support dialog rendering, or window not found.");
         return;
     }
 
@@ -2874,8 +2859,7 @@ static size_t doc_renderShapeSelection(LibreOfficeKitDocument* pThis, char** pOu
     comphelper::ProfileZone aZone("doc_renderShapeSelection");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     LokChartHelper aChartHelper(SfxViewShell::Current());
 
@@ -2925,8 +2909,7 @@ static size_t doc_renderShapeSelection(LibreOfficeKitDocument* pThis, char** pOu
     catch (const uno::Exception& exception)
     {
         css::uno::Any exAny( cppu::getCaughtException() );
-        if (gImpl)
-            gImpl->maLastExceptionMsg = exception.Message;
+        SetLastExceptionMsg(exception.Message);
         SAL_WARN("lok", "Failed to render shape selection: " << exceptionToString(exAny));
     }
 
@@ -2980,8 +2963,7 @@ static void doc_postUnoCommand(LibreOfficeKitDocument* pThis, const char* pComma
     comphelper::ProfileZone aZone("doc_postUnoCommand");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     SfxObjectShell* pDocSh = SfxObjectShell::Current();
     OUString aCommand(pCommand, strlen(pCommand), RTL_TEXTENCODING_UTF8);
@@ -3052,7 +3034,7 @@ static void doc_postUnoCommand(LibreOfficeKitDocument* pThis, const char* pComma
 
     if (!bResult)
     {
-        gImpl->maLastExceptionMsg = "Failed to dispatch the .uno: command";
+        SetLastExceptionMsg("Failed to dispatch the .uno: command");
     }
 }
 
@@ -3061,13 +3043,12 @@ static void doc_postMouseEvent(LibreOfficeKitDocument* pThis, int nType, int nX,
     comphelper::ProfileZone aZone("doc_postMouseEvent");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -3079,13 +3060,12 @@ static void doc_postWindowMouseEvent(LibreOfficeKitDocument* /*pThis*/, unsigned
     comphelper::ProfileZone aZone("doc_postWindowMouseEvent");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     VclPtr<Window> pWindow = vcl::Window::FindLOKWindow(nLOKWindowId);
     if (!pWindow)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support dialog rendering, or window not found.";
+        SetLastExceptionMsg("Document doesn't support dialog rendering, or window not found.");
         return;
     }
 
@@ -3119,13 +3099,12 @@ static void doc_postWindowGestureEvent(LibreOfficeKitDocument* /*pThis*/, unsign
     comphelper::ProfileZone aZone("doc_postWindowGestureEvent");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     VclPtr<Window> pWindow = vcl::Window::FindLOKWindow(nLOKWindowId);
     if (!pWindow)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support dialog rendering, or window not found.";
+        SetLastExceptionMsg("Document doesn't support dialog rendering, or window not found.");
         return;
     }
 
@@ -3158,13 +3137,12 @@ static void doc_setTextSelection(LibreOfficeKitDocument* pThis, int nType, int n
     comphelper::ProfileZone aZone("doc_setTextSelection");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -3176,13 +3154,12 @@ static char* doc_getTextSelection(LibreOfficeKitDocument* pThis, const char* pMi
     comphelper::ProfileZone aZone("doc_getTextSelection");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
 
@@ -3209,13 +3186,12 @@ static bool doc_paste(LibreOfficeKitDocument* pThis, const char* pMimeType, cons
     comphelper::ProfileZone aZone("doc_paste");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return false;
     }
 
@@ -3225,8 +3201,7 @@ static bool doc_paste(LibreOfficeKitDocument* pThis, const char* pMimeType, cons
     pDoc->setClipboard(xClipboard);
     if (!pDoc->isMimeTypeSupported())
     {
-        if (gImpl)
-            gImpl->maLastExceptionMsg = "Document doesn't support this mime type";
+        SetLastExceptionMsg("Document doesn't support this mime type");
         return false;
     }
 
@@ -3236,7 +3211,7 @@ static bool doc_paste(LibreOfficeKitDocument* pThis, const char* pMimeType, cons
     }));
     if (!comphelper::dispatchCommand(".uno:Paste", aPropertyValues))
     {
-        gImpl->maLastExceptionMsg = "Failed to dispatch the .uno: command";
+        SetLastExceptionMsg("Failed to dispatch the .uno: command");
         return false;
     }
 
@@ -3248,13 +3223,12 @@ static void doc_setGraphicSelection(LibreOfficeKitDocument* pThis, int nType, in
     comphelper::ProfileZone aZone("doc_setGraphicSelection");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -3266,13 +3240,12 @@ static void doc_resetSelection(LibreOfficeKitDocument* pThis)
     comphelper::ProfileZone aZone("doc_resetSelection");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -3622,7 +3595,7 @@ static char* getTrackedChanges(LibreOfficeKitDocument* pThis)
         ITiledRenderable* pDoc = getTiledRenderable(pThis);
         if (!pDoc)
         {
-            gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+            SetLastExceptionMsg("Document doesn't support tiled rendering");
             return nullptr;
         }
         OUString aTrackedChanges = pDoc->getTrackedChanges();
@@ -3640,7 +3613,7 @@ static char* getTrackedChangeAuthors(LibreOfficeKitDocument* pThis)
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return nullptr;
     }
     OUString aAuthors = pDoc->getTrackedChangeAuthors();
@@ -3652,8 +3625,7 @@ static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCo
     comphelper::ProfileZone aZone("doc_getCommandValues");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     OString aCommand(pCommand);
     static const OString aViewRowColumnHeaders(".uno:ViewRowColumnHeaders");
@@ -3705,7 +3677,7 @@ static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCo
         ITiledRenderable* pDoc = getTiledRenderable(pThis);
         if (!pDoc)
         {
-            gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+            SetLastExceptionMsg("Document doesn't support tiled rendering");
             return nullptr;
         }
 
@@ -3764,7 +3736,7 @@ static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCo
         ITiledRenderable* pDoc = getTiledRenderable(pThis);
         if (!pDoc)
         {
-            gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+            SetLastExceptionMsg("Document doesn't support tiled rendering");
             return nullptr;
         }
 
@@ -3817,7 +3789,7 @@ static char* doc_getCommandValues(LibreOfficeKitDocument* pThis, const char* pCo
     }
     else
     {
-        gImpl->maLastExceptionMsg = "Unknown command, no values returned";
+        SetLastExceptionMsg("Unknown command, no values returned");
         return nullptr;
     }
 }
@@ -3828,13 +3800,12 @@ static void doc_setClientZoom(LibreOfficeKitDocument* pThis, int nTilePixelWidth
     comphelper::ProfileZone aZone("doc_setClientZoom");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -3846,13 +3817,12 @@ static void doc_setClientVisibleArea(LibreOfficeKitDocument* pThis, int nX, int
     comphelper::ProfileZone aZone("doc_setClientVisibleArea");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -3865,13 +3835,12 @@ static void doc_setOutlineState(LibreOfficeKitDocument* pThis, bool bColumn, int
     comphelper::ProfileZone aZone("doc_setOutlineState");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     ITiledRenderable* pDoc = getTiledRenderable(pThis);
     if (!pDoc)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support tiled rendering";
+        SetLastExceptionMsg("Document doesn't support tiled rendering");
         return;
     }
 
@@ -3884,8 +3853,7 @@ static int doc_createViewWithOptions(SAL_UNUSED_PARAMETER LibreOfficeKitDocument
     comphelper::ProfileZone aZone("doc_createView");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     OUString aOptions = getUString(pOptions);
     const OUString aLanguage = extractParameter(aOptions, "Language");
@@ -3909,8 +3877,7 @@ static void doc_destroyView(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pThis
     comphelper::ProfileZone aZone("doc_destroyView");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     SfxLokHelper::destroyView(nId);
 }
@@ -3920,8 +3887,7 @@ static void doc_setView(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pThis*/,
     comphelper::ProfileZone aZone("doc_setView");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     SfxLokHelper::setView(nId);
 }
@@ -3931,8 +3897,7 @@ static int doc_getView(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pThis*/)
     comphelper::ProfileZone aZone("doc_getView");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     return SfxLokHelper::getView();
 }
@@ -3942,8 +3907,7 @@ static int doc_getViewsCount(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pThi
     comphelper::ProfileZone aZone("doc_getViewsCount");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     return SfxLokHelper::getViewsCount();
 }
@@ -3953,8 +3917,7 @@ static bool doc_getViewIds(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pThis*
     comphelper::ProfileZone aZone("doc_getViewsIds");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     return SfxLokHelper::getViewIds(pArray, nSize);
 }
@@ -3964,8 +3927,7 @@ static void doc_setViewLanguage(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*p
     comphelper::ProfileZone aZone("doc_setViewLanguage");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     SfxLokHelper::setViewLanguage(nId, OStringToOUString(language, RTL_TEXTENCODING_UTF8));
 }
@@ -3979,8 +3941,7 @@ unsigned char* doc_renderFont(SAL_UNUSED_PARAMETER LibreOfficeKitDocument* /*pTh
     comphelper::ProfileZone aZone("doc_renderFont");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     OString aSearchedFontName(pFontName);
     OUString aText(OStringToOUString(pChar, RTL_TEXTENCODING_UTF8));
@@ -4094,13 +4055,12 @@ static void doc_paintWindowDPI(LibreOfficeKitDocument* /*pThis*/, unsigned nLOKW
     comphelper::ProfileZone aZone("doc_paintWindowDPI");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     VclPtr<Window> pWindow = vcl::Window::FindLOKWindow(nLOKWindowId);
     if (!pWindow)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support dialog rendering, or window not found.";
+        SetLastExceptionMsg("Document doesn't support dialog rendering, or window not found.");
         return;
     }
 
@@ -4160,13 +4120,12 @@ static void doc_postWindow(LibreOfficeKitDocument* /*pThis*/, unsigned nLOKWindo
     comphelper::ProfileZone aZone("doc_postWindow");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     VclPtr<Window> pWindow = vcl::Window::FindLOKWindow(nLOKWindowId);
     if (!pWindow)
     {
-        gImpl->maLastExceptionMsg = "Document doesn't support dialog rendering, or window not found.";
+        SetLastExceptionMsg("Document doesn't support dialog rendering, or window not found.");
         return;
     }
 
@@ -4199,7 +4158,7 @@ static void doc_postWindow(LibreOfficeKitDocument* /*pThis*/, unsigned nLOKWindo
             Application::PostKeyEvent(VclEventId::WindowKeyInput, pWindow, &aEvent);
         }
         else
-            gImpl->maLastExceptionMsg = "Window command 'paste': wrong parameters.";
+            SetLastExceptionMsg("Window command 'paste': wrong parameters.");
     }
 }
 
@@ -4381,8 +4340,7 @@ static void lo_freeError(char* pFree)
 static char* lo_getFilterTypes(LibreOfficeKit* pThis)
 {
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     LibLibreOffice_Impl* pImpl = static_cast<LibLibreOffice_Impl*>(pThis);
 
@@ -4423,8 +4381,7 @@ static void lo_setOptionalFeatures(LibreOfficeKit* pThis, unsigned long long con
     comphelper::ProfileZone aZone("lo_setOptionalFeatures");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     LibLibreOffice_Impl *const pLib = static_cast<LibLibreOffice_Impl*>(pThis);
     pLib->mOptionalFeatures = features;
@@ -4444,8 +4401,7 @@ static void lo_setDocumentPassword(LibreOfficeKit* pThis,
     comphelper::ProfileZone aZone("lo_setDocumentPassword");
 
     SolarMutexGuard aGuard;
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
 
     assert(pThis);
     assert(pURL);
@@ -4456,8 +4412,7 @@ static void lo_setDocumentPassword(LibreOfficeKit* pThis,
 
 static char* lo_getVersionInfo(SAL_UNUSED_PARAMETER LibreOfficeKit* /*pThis*/)
 {
-    if (gImpl)
-        gImpl->maLastExceptionMsg.clear();
+    SetLastExceptionMsg();
     const OUString sVersionStrTemplate(
         "{ "
         "\"ProductName\": \"%PRODUCTNAME\", "
@@ -4509,7 +4464,7 @@ static bool initialize_uno(const OUString& aAppProgramURL)
 
     if (!xContext.is())
     {
-        gImpl->maLastExceptionMsg = "XComponentContext could not be created";
+        SetLastExceptionMsg("XComponentContext could not be created");
         SAL_INFO("lok", "XComponentContext could not be created");
         return false;
     }
@@ -4517,7 +4472,7 @@ static bool initialize_uno(const OUString& aAppProgramURL)
     xFactory = xContext->getServiceManager();
     if (!xFactory.is())
     {
-        gImpl->maLastExceptionMsg = "XMultiComponentFactory could not be created";
+        SetLastExceptionMsg("XMultiComponentFactory could not be created");
         SAL_INFO("lok", "XMultiComponentFactory could not be created");
         return false;
     }


More information about the Libreoffice-commits mailing list