Author: dick
Date: 2005-11-10 11:22:29 -0500 (Thu, 10 Nov 2005)
New Revision: 52853
Modified:
trunk/mcs/class/corlib/System.IO/ChangeLog
trunk/mcs/class/corlib/System.IO/DirectoryInfo.cs
trunk/mcs/class/corlib/Test/System.IO/PathTest.cs
Log:
2005-11-10 Dick Porter <[EMAIL PROTECTED]>
* DirectoryInfo.cs: Fix endless recursion problem with root
directory on windows too. Fixes bug 76191.
Modified: trunk/mcs/class/corlib/System.IO/ChangeLog
===================================================================
--- trunk/mcs/class/corlib/System.IO/ChangeLog 2005-11-10 16:09:30 UTC (rev
52852)
+++ trunk/mcs/class/corlib/System.IO/ChangeLog 2005-11-10 16:22:29 UTC (rev
52853)
@@ -1,3 +1,8 @@
+2005-11-10 Dick Porter <[EMAIL PROTECTED]>
+
+ * DirectoryInfo.cs: Fix endless recursion problem with root
+ directory on windows too. Fixes bug 76191.
+
2005-11-06 Zoltan Varga <[EMAIL PROTECTED]>
* Directory.cs: Add stub for net 2.0 GetFiles method.
Modified: trunk/mcs/class/corlib/System.IO/DirectoryInfo.cs
===================================================================
--- trunk/mcs/class/corlib/System.IO/DirectoryInfo.cs 2005-11-10 16:09:30 UTC
(rev 52852)
+++ trunk/mcs/class/corlib/System.IO/DirectoryInfo.cs 2005-11-10 16:22:29 UTC
(rev 52853)
@@ -48,7 +48,7 @@
FullPath = Path.GetFullPath (path);
// Path.GetFullPath ends with / when it's the root
directory (fix endless recursion problem)
- if ((path.Length > 1) || ((path [0] !=
Path.DirectorySeparatorChar) && (path [0] != Path.AltDirectorySeparatorChar))) {
+ if (Path.GetPathRoot (path) != path) {
char end = path [path.Length - 1];
if ((end == Path.DirectorySeparatorChar) ||
(end == Path.AltDirectorySeparatorChar))
FullPath += Path.DirectorySeparatorChar;
Modified: trunk/mcs/class/corlib/Test/System.IO/PathTest.cs
===================================================================
--- trunk/mcs/class/corlib/Test/System.IO/PathTest.cs 2005-11-10 16:09:30 UTC
(rev 52852)
+++ trunk/mcs/class/corlib/Test/System.IO/PathTest.cs 2005-11-10 16:22:29 UTC
(rev 52853)
@@ -259,6 +259,16 @@
} catch (Exception e) {
AssertEquals ("GetDirectoryName Exc. #03",
typeof (ArgumentException), e.GetType ());
}
+
+ if (Windows) {
+ AssertEquals ("GetDirectoryName #04", null,
Path.GetDirectoryName ("C:"));
+ AssertEquals ("GetDirectoryName #05", null,
Path.GetDirectoryName (@"C:\"));
+ AssertEquals ("GetDirectoryName #06", @"C:\",
Path.GetDirectoryName (@"C:\dir"));
+ AssertEquals ("GetDirectoryName #07",
@"C:\dir", Path.GetDirectoryName (@"C:\dir\"));
+ AssertEquals ("GetDirectoryName #08",
@"C:\dir", Path.GetDirectoryName (@"C:\dir\dir"));
+ AssertEquals ("GetDirectoryName #09",
@"C:\dir\dir", Path.GetDirectoryName (@"C:\dir\dir\"));
+ }
+
}
public void TestGetExtension ()
@@ -508,6 +518,8 @@
AssertEquals ("GetPathRoot w#12", String.Empty,
Path.GetPathRoot ("abc//def"));
AssertEquals ("GetPathRoot w#13", "\\",
Path.GetPathRoot ("/abc/def"));
AssertEquals ("GetPathRoot w#14",
"\\\\abc\\def", Path.GetPathRoot ("//abc/def"));
+ AssertEquals ("GetPathRoot w#15", @"C:\",
Path.GetPathRoot (@"C:\"));
+ AssertEquals ("GetPathRoot w#16", @"C:\",
Path.GetPathRoot (@"C:\\"));
} else {
// TODO: Same tests for Unix.
}
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches