A two-day-old clone of branch libreoffice-3-4 fails to build module
sal with dblevel=2, unittest fails: osl_old_test_file.cxx assertion
"#failure 1.1": the failure is that blah/a/.. is not transformed to
"blah", but stays "blah/a/.."

That's because in my setup symlinks are allowed, and in that setup
osl_getAbsoluteFileURL does not touch the last component (the part
after the last slash).

The attached patch changes that to _still_ treating the special names
"." and "..": they cannot be symlinks, so they don't have to be
protected against treatment and we want them treated.

-- 
Lionel
>From 9a5d3dddb140912daba08927fb1d58d3516d60f3 Mon Sep 17 00:00:00 2001
From: Lionel Elie Mamane <lio...@mamane.lu>
Date: Thu, 4 Aug 2011 11:42:29 +0200
Subject: [PATCH] osl_getAbsoluteFileURL symlinks allowed: ".", ".." still treated

---
 sal/osl/unx/file_url.cxx |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

diff --git a/sal/osl/unx/file_url.cxx b/sal/osl/unx/file_url.cxx
index 21fbe37..7caabcd 100644
--- a/sal/osl/unx/file_url.cxx
+++ b/sal/osl/unx/file_url.cxx
@@ -722,7 +722,9 @@ oslFileError osl_getAbsoluteFileURL(rtl_uString*  ustrBaseDirURL, rtl_uString* u
         rtl::OUString base;
         sal_Int32 last_slash = unresolved_path.lastIndexOf( UNICHAR_SLASH );
 
-        if (last_slash >= 0 && last_slash + 1 < unresolved_path.getLength())
+        if (last_slash >= 0 && last_slash + 1 < unresolved_path.getLength()
+            && ! ( last_slash + 2 == unresolved_path.getLength() && unresolved_path.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("."), last_slash + 1) )
+            && ! ( last_slash + 3 == unresolved_path.getLength() && unresolved_path.matchAsciiL(RTL_CONSTASCII_STRINGPARAM(".."), last_slash + 1) ))
         {
             base = unresolved_path.copy(last_slash+1);
             unresolved_path = unresolved_path.copy(0, last_slash);
-- 
1.7.2.5

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to