Patch #1608267: fix a race condition in os.makedirs() is the directory
to be created is already there. (backport from rev. 52972)
This commit is contained in:
parent
ed8f294f43
commit
2bcf0154d5
|
@ -25,6 +25,8 @@ and opendir), and leave all pathname manipulation to os.path
|
|||
|
||||
import sys
|
||||
|
||||
from errno import ENOENT, ENOTDIR, EEXIST
|
||||
|
||||
_names = sys.builtin_module_names
|
||||
|
||||
# Note: more names are added to __all__ later.
|
||||
|
@ -160,7 +162,12 @@ def makedirs(name, mode=0777):
|
|||
if not tail:
|
||||
head, tail = path.split(head)
|
||||
if head and tail and not path.exists(head):
|
||||
try:
|
||||
makedirs(head, mode)
|
||||
except OSError, e:
|
||||
# be happy if someone already created the path
|
||||
if e.errno != EEXIST:
|
||||
raise
|
||||
if tail == curdir: # xxx/newdir/. exists if xxx/newdir exists
|
||||
return
|
||||
mkdir(name, mode)
|
||||
|
@ -359,8 +366,6 @@ def execvpe(file, args, env):
|
|||
__all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"])
|
||||
|
||||
def _execvpe(file, args, env=None):
|
||||
from errno import ENOENT, ENOTDIR
|
||||
|
||||
if env is not None:
|
||||
func = execve
|
||||
argrest = (args, env)
|
||||
|
|
Loading…
Reference in New Issue