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
|
import sys
|
||||||
|
|
||||||
|
from errno import ENOENT, ENOTDIR, EEXIST
|
||||||
|
|
||||||
_names = sys.builtin_module_names
|
_names = sys.builtin_module_names
|
||||||
|
|
||||||
# Note: more names are added to __all__ later.
|
# Note: more names are added to __all__ later.
|
||||||
|
@ -160,7 +162,12 @@ def makedirs(name, mode=0777):
|
||||||
if not tail:
|
if not tail:
|
||||||
head, tail = path.split(head)
|
head, tail = path.split(head)
|
||||||
if head and tail and not path.exists(head):
|
if head and tail and not path.exists(head):
|
||||||
|
try:
|
||||||
makedirs(head, mode)
|
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
|
if tail == curdir: # xxx/newdir/. exists if xxx/newdir exists
|
||||||
return
|
return
|
||||||
mkdir(name, mode)
|
mkdir(name, mode)
|
||||||
|
@ -359,8 +366,6 @@ def execvpe(file, args, env):
|
||||||
__all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"])
|
__all__.extend(["execl","execle","execlp","execlpe","execvp","execvpe"])
|
||||||
|
|
||||||
def _execvpe(file, args, env=None):
|
def _execvpe(file, args, env=None):
|
||||||
from errno import ENOENT, ENOTDIR
|
|
||||||
|
|
||||||
if env is not None:
|
if env is not None:
|
||||||
func = execve
|
func = execve
|
||||||
argrest = (args, env)
|
argrest = (args, env)
|
||||||
|
|
|
@ -118,6 +118,9 @@ Extension Modules
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Patch #1608267: fix a race condition in os.makedirs() is the directory
|
||||||
|
to be created is already there.
|
||||||
|
|
||||||
- Patch #1610437: fix a tarfile bug with long filename headers.
|
- Patch #1610437: fix a tarfile bug with long filename headers.
|
||||||
|
|
||||||
- Patch #1472877: Fix Tix subwidget name resolution.
|
- Patch #1472877: Fix Tix subwidget name resolution.
|
||||||
|
|
Loading…
Reference in New Issue