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

Reply via email to