[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - desktop/source

Jan Holesovsky kendy at collabora.com
Tue Jul 7 00:49:05 PDT 2015


 desktop/source/lib/init.cxx |   37 +++++++++++++++++++++++++++----------
 1 file changed, 27 insertions(+), 10 deletions(-)

New commits:
commit a24da4040675bf18c74c54fc9f3480aa7834efc1
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Mon Jul 6 15:16:56 2015 +0200

    LOK: Cleanup absolutizing of URLs.
    
    Thanks to Stephan Bergmann.
    
    Change-Id: I22aa3bb827db28bce3eabebb9b8c514663fad860
    Reviewed-on: https://gerrit.libreoffice.org/16795
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 1457e0f..b2076c6 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -26,8 +26,9 @@
 #include <osl/file.hxx>
 #include <osl/process.h>
 #include <osl/thread.h>
-#include <rtl/strbuf.hxx>
 #include <rtl/bootstrap.hxx>
+#include <rtl/strbuf.hxx>
+#include <rtl/uri.hxx>
 #include <cppuhelper/bootstrap.hxx>
 #include <comphelper/dispatchcommand.hxx>
 #include <comphelper/lok.hxx>
@@ -165,19 +166,23 @@ static OUString getUString(const char* pString)
 static OUString getAbsoluteURL(const char* pURL)
 {
     OUString aURL(getUString(pURL));
-
-    // return unchanged if it likely is an URL already
-    if (aURL.indexOf("://") > 0)
+    if (aURL.isEmpty())
         return aURL;
 
-    OUString sAbsoluteDocUrl, sWorkingDir, sDocPathUrl;
-
     // convert relative paths to absolute ones
-    osl_getProcessWorkingDir(&sWorkingDir.pData);
-    osl::FileBase::getFileURLFromSystemPath( aURL, sDocPathUrl );
-    osl::FileBase::getAbsoluteFileURL(sWorkingDir, sDocPathUrl, sAbsoluteDocUrl);
+    OUString aWorkingDir;
+    osl_getProcessWorkingDir(&aWorkingDir.pData);
+    if (!aWorkingDir.endsWith("/"))
+        aWorkingDir += "/";
+
+    try {
+        return rtl::Uri::convertRelToAbs(aWorkingDir, aURL);
+    }
+    catch (const rtl::MalformedUriException &)
+    {
+    }
 
-    return sAbsoluteDocUrl;
+    return OUString();
 }
 
 extern "C"
@@ -349,6 +354,12 @@ static LibreOfficeKitDocument* lo_documentLoadWithOptions(LibreOfficeKit* pThis,
     SolarMutexGuard aGuard;
 
     OUString aURL(getAbsoluteURL(pURL));
+    if (aURL.isEmpty())
+    {
+        pLib->maLastExceptionMsg = "Filename to load was not provided.";
+        SAL_INFO("lok", "URL for load is empty");
+        return NULL;
+    }
 
     pLib->maLastExceptionMsg.clear();
 
@@ -415,6 +426,12 @@ static int doc_saveAs(LibreOfficeKitDocument* pThis, const char* sUrl, const cha
 
     OUString sFormat = getUString(pFormat);
     OUString aURL(getAbsoluteURL(sUrl));
+    if (aURL.isEmpty())
+    {
+        gImpl->maLastExceptionMsg = "Filename to save to was not provided.";
+        SAL_INFO("lok", "URL for save is empty");
+        return false;
+    }
 
     try
     {


More information about the Libreoffice-commits mailing list