diff --git a/SystemTools.cxx b/SystemTools.cxx
index b736ed4771f760ed379662082ad627c6ceaf3774..87da80e8e076034920cf91a1d152ac1bf50d267d 100644
--- a/SystemTools.cxx
+++ b/SystemTools.cxx
@@ -2436,10 +2436,6 @@ static bool CloneFileContent(const std::string& source,
 bool SystemTools::CopyFileAlways(const std::string& source,
                                  const std::string& destination)
 {
-  // If files are the same do not copy
-  if (SystemTools::SameFile(source, destination)) {
-    return true;
-  }
   mode_t perm = 0;
   bool perms = SystemTools::GetPermissions(source, perm);
   std::string real_destination = destination;
@@ -2460,6 +2456,10 @@ bool SystemTools::CopyFileAlways(const std::string& source,
     } else {
       destination_dir = SystemTools::GetFilenamePath(destination);
     }
+    // If files are the same do not copy
+    if (SystemTools::SameFile(source, real_destination)) {
+      return true;
+    }
 
     // Create destination directory