Fix creating a directory via KNewFileMenu+KIO::mkpath on Qt 5.9.3+
ClosedPublic

Authored by hein on Nov 28 2017, 10:50 AM.

Details

Summary

f62768d04652 in qtbase.git introduced a behavior change in QUrl
causing it to reject URLs with a path of "//foo" (note the double
slash) as invalid.

Both KNewFileMenu and KIO::mkpath contained code following this
pattern:

url.path() + '/' + name

This is a bad mix with forwarding slaves like kio_desktop, which
translate a top-level path of / to some other URL:

(desktop:)/ + / + foo = //foo

This patch addresses the two instances of this by wrapping the
string building in QDir::cleanPath, which I think is the shortest
and most readable way to go.

2353119aae8f in kio.git (D8836) was another commit fixing fallout
from this Qt change. Is unlikely this patch will be the last one.
I suspect many other variations of this problem lurk about the
codebase.

BUG:387073

Diff Detail

Repository
R241 KIO
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.
hein created this revision.Nov 28 2017, 10:50 AM
Restricted Application added a project: Frameworks. · View Herald TranscriptNov 28 2017, 10:50 AM
Restricted Application added a subscriber: Frameworks. · View Herald Transcript
hein requested review of this revision.Nov 28 2017, 10:50 AM
dfaure accepted this revision.Nov 28 2017, 11:39 AM

Yep, this is annoying, we really miss good old addPath()...

This revision is now accepted and ready to land.Nov 28 2017, 11:39 AM
This revision was automatically updated to reflect the committed changes.