r24867 by jghali - Try to avoid better copying a file over itself

scribus-commit scribus-commit at lists.scribus.net
Sun Jan 30 16:29:07 UTC 2022


Author: jghali
Date: Sun Jan 30 16:29:07 2022
New Revision: 24867

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24867
Log:
Try to avoid better copying a file over itself

Modified:
    branches/Version15x/Scribus/scribus/util_file.cpp

Modified: branches/Version15x/Scribus/scribus/util_file.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=24867&path=/branches/Version15x/Scribus/scribus/util_file.cpp
==============================================================================
--- branches/Version15x/Scribus/scribus/util_file.cpp	(original)
+++ branches/Version15x/Scribus/scribus/util_file.cpp	Sun Jan 30 16:29:07 2022
@@ -60,8 +60,15 @@
 	bool success = true;
 	if ((source.isEmpty()) || (target.isEmpty()))
 		return false;
-	if (source == target)
-		return false;
+
+	// Make sure to compare source and target paths
+	// by using same directory separators. Source and target
+	// arguments might use native and Qt's separators for eg
+	QString qtSource = QDir::fromNativeSeparators(source);
+	QString qtTarget = QDir::fromNativeSeparators(target);
+	if (qtSource == qtTarget)
+		return false;
+
 	QFile s(source);
 	if (!s.exists())
 		return false;
@@ -84,8 +91,15 @@
 	bool success = false;
 	if ((source.isEmpty()) || (target.isEmpty()))
 		return false;
-	if (source == target)
-		return false;
+
+	// Make sure to compare source and target paths
+	// by using same directory separators. Source and target
+	// arguments might use native and Qt's separators for eg
+	QString qtSource = QDir::fromNativeSeparators(source);
+	QString qtTarget = QDir::fromNativeSeparators(target);
+	if (qtSource == qtTarget)
+		return false;
+
 	QFile srcFile(source);
 	QString tempFileName;
 	QTemporaryFile* tempFile = new QTemporaryFile(target + "_XXXXXX");
@@ -178,8 +192,15 @@
 {
 	if (source.isEmpty() || target.isEmpty())
 		return false;
-	if (source == target)
-		return false;
+
+	// Make sure to compare source and target paths
+	// by using same directory separators. Source and target
+	// arguments might use native and Qt's separators for eg
+	QString qtSource = QDir::fromNativeSeparators(source);
+	QString qtTarget = QDir::fromNativeSeparators(target);
+	if (qtSource == qtTarget)
+		return false;
+
 	bool moveSucceed = copyFile(source, target);
 	if (moveSucceed)
 		moveSucceed &= QFile::remove(source);




More information about the scribus-commit mailing list