Commit d17db71b6f8343204683542538416ec87e06261e

Russell Belfer 2012-06-08T13:56:53

isalpha is not great for UTF-8 When checking for a drive letter on windows, instead of using isalpha(), it is better to just check for a..z and A..Z, I think, particularly because the MS isalpha implementation appears to assert when given an 0xFF byte.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
diff --git a/src/path.c b/src/path.c
index 84edf6d..c61f18c 100644
--- a/src/path.c
+++ b/src/path.c
@@ -170,7 +170,8 @@ int git_path_root(const char *path)
 
 #ifdef GIT_WIN32
 	/* Does the root of the path look like a windows drive ? */
-	if (isalpha(path[0]) && (path[1] == ':'))
+	if (((path[0] >= 'a' && path[0] <= 'z') ||
+		 (path[0] >= 'A' && path[0] <= 'Z')) && path[1] == ':')
 		offset += 2;
 
 	/* Are we dealing with a windows network path? */