From kde-bugs-dist Fri Oct 31 21:22:15 2008 From: Frank Reininghaus Date: Fri, 31 Oct 2008 21:22:15 +0000 To: kde-bugs-dist Subject: [Bug 173927] [patch] Crash in KDirModelPrivate::nodeForUrl() if path Message-Id: <20081031212215.746F2109EE () immanuel ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-bugs-dist&m=122548816629848 http://bugs.kde.org/show_bug.cgi?id=173927 Frank Reininghaus frank78ac googlemail com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |frank78ac@googlemail.com AssignedTo|peter.penz@gmx.at |faure@kde.org Component|general |general Product|dolphin |kio Summary|Dolphin crashes when path |[patch] Crash in |has two slashes and Folders |KDirModelPrivate::nodeForUrl |panel is enabled |() if path contains two or | |more consecutive slashes --- Comment #1 from Frank Reininghaus 2008-10-31 22:22:12 --- Confirmed in trunk rev. 878290. The problem is that KDirModelPrivate::nodeForUrl() does not handle paths with two or more consecutive slashes properly. The patch below fixes it for me. Maybe I should also write a simple unit test to make sure that there is no regression in the future... Index: kio/kio/kdirmodel.cpp =================================================================== --- kio/kio/kdirmodel.cpp (revision 878290) +++ kio/kio/kdirmodel.cpp (working copy) @@ -186,7 +186,7 @@ if (url.protocol() != nodeUrl.protocol()) return 0; - const QString pathStr = url.path(); // no trailing slash + const QString pathStr = url.path().replace(QRegExp("//+"), "/"); // pathStr has no trailing slash, but multiple slashes must be removed KDirModelDirNode* dirNode = m_rootNode; if (!pathStr.startsWith(nodeUrl.path())) { @@ -203,7 +203,7 @@ // E.g. pathStr is /a/b/c and nodePath is /a. We want to find the child "b" in dirNode. const QString relativePath = pathStr.mid(nodePath.length()); - Q_ASSERT(!relativePath.startsWith('/')); // huh? we need double-slash simplification? + Q_ASSERT(!relativePath.startsWith('/')); // check if multiple slashes have been removed (see above) const int nextSlash = relativePath.indexOf('/'); const QString fileName = relativePath.left(nextSlash); // works even if nextSlash==-1 KDirModelNode* node = dirNode->m_childNodesByName.value(fileName); -- Configure bugmail: http://bugs.kde.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are watching all bug changes.