File fix-crash.patch of Package kdesvn
From 921e6f656a265cf51fdde5b536e3d7acbf168a05 Mon Sep 17 00:00:00 2001
From: Christian Ehrlicher <Ch.Ehrlicher@gmx.de>
Date: Mon, 27 Feb 2017 19:47:11 +0100
Subject: Bug 375655 - KDESVN related crash perhaps while right-clicking in
Dolphin This happens when a '@' is in the path - '@' is interpreted as the
revision separator inside subversion and must be quoted (with an additional
'@' at the end)
---
src/kdesvnd/kdesvnd.cpp | 12 +++++++++---
src/svnqt/client_status.cpp | 4 ++++
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/kdesvnd/kdesvnd.cpp b/src/kdesvnd/kdesvnd.cpp
index 9f9ea7d..d0382db 100644
--- a/src/kdesvnd/kdesvnd.cpp
+++ b/src/kdesvnd/kdesvnd.cpp
@@ -77,7 +77,10 @@ QStringList kdesvnd::getTopLevelActionMenu(const QStringList &urlList) const
QList<QUrl> urls;
urls.reserve(urlList.size());
Q_FOREACH(const QString &str, urlList) {
- urls += QUrl(str);
+ if (str.contains(QLatin1Char('@')))
+ urls += QUrl(str + QLatin1Char('@'));
+ else
+ urls += QUrl(str);
}
return getActionMenu(urls, true);
@@ -89,7 +92,10 @@ QStringList kdesvnd::getActionMenu(const QStringList &urlList) const
QList<QUrl> urls;
urls.reserve(urlList.size());
Q_FOREACH(const QString &str, urlList) {
- urls += QUrl(str);
+ if (str.contains(QLatin1Char('@')))
+ urls += QUrl(str + QLatin1Char('@'));
+ else
+ urls += QUrl(str);
}
return getActionMenu(urls, false);
}
@@ -170,7 +176,7 @@ QStringList kdesvnd::getActionMenu(const QList<QUrl> &list, bool toplevel) const
QStringList kdesvnd::getSingleActionMenu(const QString &what) const
{
QList<QUrl> l;
- l.append(QUrl(what));
+ l.append(QUrl(what.contains(QLatin1Char('@')) ? what + QLatin1Char('@') : what));
return getActionMenu(l, false);
}
diff --git a/src/svnqt/client_status.cpp b/src/svnqt/client_status.cpp
index 53b6206..72b21db 100644
--- a/src/svnqt/client_status.cpp
+++ b/src/svnqt/client_status.cpp
@@ -419,6 +419,10 @@ Client_impl::info(const Path &_p,
_buf,
pool);
checkErrorThrow(error);
+ if (!truepath)
+ {
+ throw ClientException("no path given!");
+ }
if (peg_revision.kind() == svn_opt_revision_unspecified) {
if ((svn_path_is_url(_p.cstr())) && (pegr.kind == svn_opt_revision_unspecified)) {
pegr.kind = svn_opt_revision_head;
--
cgit v0.11.2