[PATCH STABLE] makedirs: abort if parent == name (issue2531)

Adrian Buehlmann adrian at cadifra.com
Wed Dec 1 14:39:52 CST 2010


# HG changeset patch
# User Adrian Buehlmann <adrian at cadifra.com>
# Date 1291234531 -3600
# Branch stable
# Node ID 6facc02f99d0b993768429bcf6e799767ea77ea6
# Parent  5986f44ea63c600346d925c4d563cb1058e4ebb9
makedirs: abort if parent == name (issue2531)

catches unknown drive letters on Windows

diff --git a/mercurial/util.py b/mercurial/util.py
--- a/mercurial/util.py
+++ b/mercurial/util.py
@@ -833,6 +833,7 @@ class atomictempfile(object):
 
 def makedirs(name, mode=None):
     """recursive directory creation with parent mode inheritance"""
+    parent = os.path.abspath(os.path.dirname(name))
     try:
         os.mkdir(name)
         if mode is not None:
@@ -841,9 +842,8 @@ def makedirs(name, mode=None):
     except OSError, err:
         if err.errno == errno.EEXIST:
             return
-        if not name or err.errno != errno.ENOENT:
+        if not name or parent == name or err.errno != errno.ENOENT:
             raise
-    parent = os.path.abspath(os.path.dirname(name))
     makedirs(parent, mode)
     makedirs(name, mode)
 


More information about the Mercurial-devel mailing list