OSDN Git Service

fixed issues with status (and icon overlays) in root directories
[tortoisegit/TortoiseGitJp.git] / src / Git / GitAdminDir.cpp
index 44556ea..e09a6e8 100644 (file)
@@ -118,7 +118,7 @@ bool GitAdminDir::HasAdminDir(const CString& path, bool bDir,CString *ProjectTop
        CString sDirName = path;\r
        if (!bDir)\r
        {\r
-               sDirName = path.Left(path.ReverseFind('\\'));\r
+               sDirName = path.Left(path.ReverseFind(_T('\\')));\r
        }\r
        \r
        // a .git dir or anything inside it should be left out, only interested in working copy files -- Myagi\r
@@ -141,17 +141,26 @@ bool GitAdminDir::HasAdminDir(const CString& path, bool bDir,CString *ProjectTop
        }\r
        }\r
 \r
-       do\r
+       for (;;)\r
        {\r
                if(PathFileExists(sDirName + _T("\\.git")))\r
                {\r
                        if(ProjectTopDir)\r
+                       {\r
                                *ProjectTopDir=sDirName;\r
+                               // Make sure to add the trailing slash to root paths such as 'C:'\r
+                               if (sDirName.GetLength() == 2 && sDirName[1] == _T(':'))\r
+                                       (*ProjectTopDir) += _T("\\");\r
+                       }\r
                        return true;\r
                }\r
-               sDirName = sDirName.Left(sDirName.ReverseFind('\\'));\r
 \r
-       }while(sDirName.ReverseFind('\\')>0);\r
+               int x = sDirName.ReverseFind(_T('\\'));\r
+               if (x < 2)\r
+                       break;\r
+\r
+               sDirName = sDirName.Left(x);\r
+       }\r
 \r
        return false;\r
        \r