From 0682a8d4e72e2e700862c19d610c3d15d0aa7101 Mon Sep 17 00:00:00 2001 From: Christian Kamm Date: Mon, 18 Feb 2019 14:32:47 +0100 Subject: [PATCH] Folder wizard: Fix infinite loop for bad paths #7041 --- src/gui/folderman.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gui/folderman.cpp b/src/gui/folderman.cpp index 753d83156f..740de27155 100644 --- a/src/gui/folderman.cpp +++ b/src/gui/folderman.cpp @@ -1340,7 +1340,16 @@ static QString canonicalPath(const QString &path) { QFileInfo selFile(path); if (!selFile.exists()) { - return canonicalPath(selFile.dir().path()) + '/' + selFile.fileName(); + const auto parentPath = selFile.dir().path(); + + // It's possible for the parentPath to match the path + // (possibly we've arrived at a non-existant drive root on Windows) + // and recursing would be fatal. + if (parentPath == path) { + return path; + } + + return canonicalPath(parentPath) + '/' + selFile.fileName(); } return selFile.canonicalFilePath(); }