<div dir="ltr">Turns out this did not make the bot any happier, but it did fix some post-commit feedback from Richard on r243597  On unix there are corner cases where foo/../foo is definitely not correct (related reading: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__plan9.bell-2Dlabs.com_sys_doc_lexnames.html&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=-SHc7jrPx_eKdCD7iVfA9IQXC8rVfhk5xiF0zHx6qP4&s=d10XxonBGggwxdzoH6I5-VlNjAv75KCRfBy8-9PoMDw&e=">http://plan9.bell-labs.com/sys/doc/lexnames.html</a>).<div><br></div><div>In r243602 I removed the spurious test that was the real culprit (after investigating a bit deeper what exactly it was testing). The bot is now happy.</div><div><br></div><div>-- Sean Silva</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 29, 2015 at 5:52 PM, Sean Silva <span dir="ltr"><<a href="mailto:chisophugis@gmail.com" target="_blank">chisophugis@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: silvas<br>
Date: Wed Jul 29 19:52:32 2015<br>
New Revision: 243600<br>
<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject-3Frev-3D243600-26view-3Drev&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=-SHc7jrPx_eKdCD7iVfA9IQXC8rVfhk5xiF0zHx6qP4&s=cCrKBOg9HBZj6mlVfkFoeLBi0B29ZUI099r5J67xlF8&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=243600&view=rev</a><br>
Log:<br>
Attempt to make clang-x64-ninja-win7 happy.<br>
<br>
It looks like we were somehow relying somewhere on removing 'foo/./bar'<br>
but *not* 'foo/../foo/bar'. Currently investigating.<br>
<br>
Modified:<br>
    cfe/trunk/include/clang/Basic/FileManager.h<br>
    cfe/trunk/lib/Basic/FileManager.cpp<br>
<br>
Modified: cfe/trunk/include/clang/Basic/FileManager.h<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_include_clang_Basic_FileManager.h-3Frev-3D243600-26r1-3D243599-26r2-3D243600-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=-SHc7jrPx_eKdCD7iVfA9IQXC8rVfhk5xiF0zHx6qP4&s=x1RZ1etc6-odcM3bpxf4gOQdNPKS7d7p317dl7r4UrA&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/FileManager.h?rev=243600&r1=243599&r2=243600&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/include/clang/Basic/FileManager.h (original)<br>
+++ cfe/trunk/include/clang/Basic/FileManager.h Wed Jul 29 19:52:32 2015<br>
@@ -267,7 +267,7 @@ public:<br>
                               time_t ModificationTime);<br>
<br>
   /// \brief Remove any './' components from a path.<br>
-  static bool removeDotPaths(SmallVectorImpl<char> &Path);<br>
+  static bool removeDotPaths(SmallVectorImpl<char> &Path, bool RemoveDotDot = false);<br>
<br>
   /// \brief Retrieve the canonical name for a given directory.<br>
   ///<br>
<br>
Modified: cfe/trunk/lib/Basic/FileManager.cpp<br>
URL: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__llvm.org_viewvc_llvm-2Dproject_cfe_trunk_lib_Basic_FileManager.cpp-3Frev-3D243600-26r1-3D243599-26r2-3D243600-26view-3Ddiff&d=AwMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=BSqEv9KvKMW_Ob8SyngJ70KdZISM_ASROnREeq0cCxk&m=-SHc7jrPx_eKdCD7iVfA9IQXC8rVfhk5xiF0zHx6qP4&s=Hn5cUiohMwh9lOxy49mnnR-Y_p5RPGeoth1zwMvTwvM&e=" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Basic/FileManager.cpp?rev=243600&r1=243599&r2=243600&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Basic/FileManager.cpp (original)<br>
+++ cfe/trunk/lib/Basic/FileManager.cpp Wed Jul 29 19:52:32 2015<br>
@@ -517,7 +517,7 @@ void FileManager::modifyFileEntry(FileEn<br>
 /// Remove '.' and '..' path components from the given absolute path.<br>
 /// \return \c true if any changes were made.<br>
 // FIXME: Move this to llvm::sys::path.<br>
-bool FileManager::removeDotPaths(SmallVectorImpl<char> &Path) {<br>
+bool FileManager::removeDotPaths(SmallVectorImpl<char> &Path, bool RemoveDotDot) {<br>
   using namespace llvm::sys;<br>
<br>
   SmallVector<StringRef, 16> ComponentStack;<br>
@@ -528,10 +528,12 @@ bool FileManager::removeDotPaths(SmallVe<br>
   for (StringRef C : llvm::make_range(path::begin(Rel), path::end(Rel))) {<br>
     if (C == ".")<br>
       continue;<br>
-    if (C == "..") {<br>
-      if (!ComponentStack.empty())<br>
-        ComponentStack.pop_back();<br>
-      continue;<br>
+    if (RemoveDotDot) {<br>
+      if (C == "..") {<br>
+        if (!ComponentStack.empty())<br>
+          ComponentStack.pop_back();<br>
+        continue;<br>
+      }<br>
     }<br>
     ComponentStack.push_back(C);<br>
   }<br>
@@ -566,7 +568,7 @@ StringRef FileManager::getCanonicalName(<br>
   SmallString<256> CanonicalNameBuf(CanonicalName);<br>
   llvm::sys::fs::make_absolute(CanonicalNameBuf);<br>
   llvm::sys::path::native(CanonicalNameBuf);<br>
-  removeDotPaths(CanonicalNameBuf);<br>
+  removeDotPaths(CanonicalNameBuf, true);<br>
   char *Mem = CanonicalNameStorage.Allocate<char>(CanonicalNameBuf.size());<br>
   memcpy(Mem, CanonicalNameBuf.data(), CanonicalNameBuf.size());<br>
   CanonicalName = StringRef(Mem, CanonicalNameBuf.size());<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>