sal/osl/unx/module.cxx |   28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

New commits:
commit c8976bdfdfa361fec9e1e5ff342094e409981fad
Author:     Stephan Bergmann <sberg...@redhat.com>
AuthorDate: Tue Feb 16 20:57:05 2021 +0100
Commit:     Stephan Bergmann <sberg...@redhat.com>
CommitDate: Tue Feb 16 22:16:04 2021 +0100

    tdf#137208 Assume that dladdr provides an absolute pathname
    
    3dfb38a45d6495d357c3359b5b02cde871df6f67 "added getUrlFromAddress 
(#88338#)" had
    introduced the call to osl_getAbsoluteFileURL for no documented reason, but 
it
    looks unlikely that any relevant implementation of dladdr (as called by
    getModulePathFromAddress; and where dladdr is a non-POSIX extension on the
    various platforms) would provide pathnames that are relative to the 
process's
    CWD.
    
    (Instead, add a check whether osl_getFileURLFromSystemPath succeeds.)
    
    Change-Id: If291e9fdf63fc3f42ba7c7e3138d7db5328ed165
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111004
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sberg...@redhat.com>

diff --git a/sal/osl/unx/module.cxx b/sal/osl/unx/module.cxx
index 7669c047a7a3..72653a997f92 100644
--- a/sal/osl/unx/module.cxx
+++ b/sal/osl/unx/module.cxx
@@ -298,27 +298,27 @@ sal_Bool SAL_CALL osl_getModuleURLFromAddress(void * 
addr, rtl_uString ** ppLibr
     rtl_String * path = nullptr;
     if (getModulePathFromAddress(addr, &path))
     {
-        rtl_uString * workDir = nullptr;
-        osl_getProcessWorkingDir(&workDir);
-        if (workDir)
+        rtl_string2UString(ppLibraryUrl,
+                           path->buffer,
+                           path->length,
+                           osl_getThreadTextEncoding(),
+                           OSTRING_TO_OUSTRING_CVTFLAGS);
+
+        SAL_WARN_IF(
+            *ppLibraryUrl == nullptr, "sal.osl", "rtl_string2UString failed");
+        auto const e = osl_getFileURLFromSystemPath(*ppLibraryUrl, 
ppLibraryUrl);
+        if (e == osl_File_E_None)
         {
-            rtl_string2UString(ppLibraryUrl,
-                               path->buffer,
-                               path->length,
-                               osl_getThreadTextEncoding(),
-                               OSTRING_TO_OUSTRING_CVTFLAGS);
-
-            SAL_WARN_IF(
-                *ppLibraryUrl == nullptr, "sal.osl", "rtl_string2UString 
failed");
-            osl_getFileURLFromSystemPath(*ppLibraryUrl, ppLibraryUrl);
-            osl_getAbsoluteFileURL(workDir, *ppLibraryUrl, ppLibraryUrl);
             SAL_INFO("sal.osl", "osl_getModuleURLFromAddress(" << addr << ") 
=> " << OUString(*ppLibraryUrl));
 
-            rtl_uString_release(workDir);
             result = true;
         }
         else
         {
+            SAL_WARN(
+                "sal.osl",
+                "osl_getModuleURLFromAddress(" << addr << "), 
osl_getFileURLFromSystemPath("
+                    << OUString::unacquired(ppLibraryUrl) << ") failed with " 
<< e);
             result = false;
         }
         rtl_string_release(path);
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to