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 7dc05252a0
commit
Pick-to: 6.5 6.2
Fixes: QTBUG-111027
Change-Id: I195b4c407068b14e2ef94800ad1945adc66408cb
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
parent
1faea46fb6
commit
f4d897f04e
@ -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()));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user