瀏覽代碼

KWSys 2013-07-10 (beef6819)

Extract upstream KWSys using the following shell commands.

$ git archive --prefix=upstream-kwsys/ beef6819 | tar x
$ git shortlog --no-merges --abbrev=8 --format='%h %s' f6c4c247..beef6819
Brad King (1):
      beef6819 SystemTools: Implement IsSubDirectory without loop

Change-Id: Ifab0c0384c7fbf1f9fc934918573a49b38f7bc0a
KWSys Robot 12 年之前
父節點
當前提交
0a44fa4c6c
共有 1 個文件被更改,包括 4 次插入8 次删除
  1. 4 8
      SystemTools.cxx

+ 4 - 8
SystemTools.cxx

@@ -4261,17 +4261,13 @@ bool SystemTools::IsSubDirectory(const char* cSubdir, const char* cDir)
     }
   kwsys_stl::string subdir = cSubdir;
   kwsys_stl::string dir = cDir;
+  SystemTools::ConvertToUnixSlashes(subdir);
   SystemTools::ConvertToUnixSlashes(dir);
-  kwsys_stl::string path = subdir;
-  do
+  if(subdir.size() > dir.size() && subdir[dir.size()] == '/')
     {
-    path = SystemTools::GetParentDirectory(path.c_str());
-    if(SystemTools::ComparePath(dir.c_str(), path.c_str()))
-      {
-      return true;
-      }
+    std::string s = subdir.substr(0, dir.size());
+    return SystemTools::ComparePath(s.c_str(), dir.c_str());
     }
-  while ( path.size() > dir.size() );
   return false;
 }