From: Raymond Hettinger <python@rcn.com>
Date: Sun, 8 Sep 2002 20:43:59 +0000 (+0000)
Subject: shutil.copyfile(src,dst) was clobbering the file when the src and dst were
X-Git-Tag: v2.3c1~4170
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=57e79459fa872c4fc1724e34b9d2f90d53aac818;p=python

shutil.copyfile(src,dst) was clobbering the file when the src and dst were
the same.   Added check to verify the two names are not the same.  Does not
check the actual files to see if there is a symbolic link.

Closes SF bug 490165 and Tzot's patch 604600.
---

diff --git a/Lib/shutil.py b/Lib/shutil.py
index 3076be92e1..0e60870957 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -24,6 +24,11 @@ def copyfile(src, dst):
     """Copy data from src to dst"""
     fsrc = None
     fdst = None
+    # check for same pathname; all platforms
+    _src = os.path.normcase(os.path.abspath(src))
+    _dst = os.path.normcase(os.path.abspath(dst))
+    if _src == _dst:
+        return
     try:
         fsrc = open(src, 'rb')
         fdst = open(dst, 'wb')