summaryrefslogtreecommitdiffstats
path: root/src/tools/androiddeployqt/main.cpp
diff options
context:
space:
mode:
authorBartlomiej Moskal <bartlomiej.moskal@qt.io>2023-03-13 13:32:03 +0100
committerBartlomiej Moskal <bartlomiej.moskal@qt.io>2023-03-15 12:42:15 +0000
commitf4d897f04eee6386382096945f872ae9f306a5de (patch)
treed9c32304f9d56405e25021b661111481fd179bd2 /src/tools/androiddeployqt/main.cpp
parent1faea46fb6aee440c82b91acb919e7380717ddc0 (diff)
androiddeployqt: remove infinity loop in deleteMissingFiles
There was a possibility of infinite loop and eventually crash when androiddeployqt was used for the second time. Everything because of deleteMissingFiles function for clean up previous build. When we find the same names and those are directories, we call recursively deleteMissingFiles. The parameters we use are absoluteDir, not absoluteFilePath. As we use parent of found dir, deleteMissingFiles is called with the same values as before. This commit removes possibility of infinite loop by using absoluteFilePath. That allows to avoid calling deleteMissingFiles with the same parameters. There is still a possibility, that directory that was found is not the same as we were looking for. That will cause not needed files removing, but those file will be copied again later. This regression was created by 7dc05252a0df829bb5ea3994160d425bb0da26cb commit Pick-to: 6.5 6.2 Fixes: QTBUG-111027 Change-Id: I195b4c407068b14e2ef94800ad1945adc66408cb Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Diffstat (limited to 'src/tools/androiddeployqt/main.cpp')
-rw-r--r--src/tools/androiddeployqt/main.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp
index dace16320e..1496b391f0 100644
--- a/src/tools/androiddeployqt/main.cpp
+++ b/src/tools/androiddeployqt/main.cpp
@@ -346,7 +346,7 @@ void deleteMissingFiles(const Options &options, const QDir &srcDir, const QDir &
for (const QFileInfo &src : srcEntries)
if (dst.fileName() == src.fileName()) {
if (dst.isDir())
- deleteMissingFiles(options, src.absoluteDir(), dst.absoluteDir());
+ deleteMissingFiles(options, src.absoluteFilePath(), dst.absoluteFilePath());
found = true;
break;
}
@@ -1301,7 +1301,7 @@ void cleanTopFolders(const Options &options, const QDir &srcDir, const QString &
const auto dirs = srcDir.entryInfoList(QDir::NoDotAndDotDot | QDir::Dirs);
for (const QFileInfo &dir : dirs) {
if (dir.fileName() != "libs"_L1)
- deleteMissingFiles(options, dir.absoluteDir(), QDir(dstDir + dir.fileName()));
+ deleteMissingFiles(options, dir.absoluteFilePath(), QDir(dstDir + dir.fileName()));
}
}