about summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorDawid Ciężarkiewicz <dpc@dpc.pw>2017-03-11 08:04:30 -0800
committerDawid Ciężarkiewicz <dpc@dpc.pw>2017-03-17 20:15:05 -0700
commit0ec28b796d1206c4442f0269febe2a1cc0794411 (patch)
tree0369fe06721d732b4ec945e2be53f2874ccc2cee /src/libstd
parentdb00ba9eb2afa1a3db24e208cbd63125d0157090 (diff)
downloadrust-0ec28b796d1206c4442f0269febe2a1cc0794411.tar.gz
rust-0ec28b796d1206c4442f0269febe2a1cc0794411.zip
Fix new version of `create_dir_all`
It will now correctly fail on existing non-directories.
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/fs.rs4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libstd/fs.rs b/src/libstd/fs.rs
index bb8b4064fab..6a465e38f38 100644
--- a/src/libstd/fs.rs
+++ b/src/libstd/fs.rs
@@ -1777,7 +1777,7 @@ impl DirBuilder {
     fn create_dir_all(&self, path: &Path) -> io::Result<()> {
         match self.inner.mkdir(path) {
             Ok(()) => return Ok(()),
-            Err(ref e) if e.kind() == io::ErrorKind::AlreadyExists => return Ok(()),
+            Err(ref e) if e.kind() == io::ErrorKind::AlreadyExists && path.is_dir() => return Ok(()),
             Err(ref e) if e.kind() == io::ErrorKind::NotFound => {}
             Err(e) => return Err(e),
         }
@@ -1787,7 +1787,7 @@ impl DirBuilder {
         }
         match self.inner.mkdir(path) {
             Ok(()) => Ok(()),
-            Err(ref e) if e.kind() == io::ErrorKind::AlreadyExists => Ok(()),
+            Err(ref e) if e.kind() == io::ErrorKind::AlreadyExists && path.is_dir() => Ok(()),
             Err(e) => Err(e),
         }
     }