kde5.kservice: add patch to increase buffer size

Fixes #15044.
This commit is contained in:
Thomas Tuegel 2016-04-28 11:10:42 -05:00
parent 6d01760dd4
commit 3f753a655d
7 changed files with 56 additions and 55 deletions

View File

@ -1,25 +0,0 @@
From ae8919eb81abad369e4a26ffcd845b140983398d Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Wed, 14 Oct 2015 06:28:57 -0500
Subject: [PATCH 1/2] qdiriterator follow symlinks
---
src/sycoca/kbuildsycoca.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/sycoca/kbuildsycoca.cpp b/src/sycoca/kbuildsycoca.cpp
index 1deae14..250baa8 100644
--- a/src/sycoca/kbuildsycoca.cpp
+++ b/src/sycoca/kbuildsycoca.cpp
@@ -208,7 +208,7 @@ bool KBuildSycoca::build()
QStringList relFiles;
const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_resourceSubdir, QStandardPaths::LocateDirectory);
Q_FOREACH (const QString &dir, dirs) {
- QDirIterator it(dir, QDirIterator::Subdirectories);
+ QDirIterator it(dir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
while (it.hasNext()) {
const QString filePath = it.next();
Q_ASSERT(filePath.startsWith(dir)); // due to the line below...
--
2.5.2

View File

@ -1,25 +0,0 @@
From 46d124da602d84b7611a7ff0ac0862168d451cdb Mon Sep 17 00:00:00 2001
From: Thomas Tuegel <ttuegel@gmail.com>
Date: Wed, 14 Oct 2015 06:31:29 -0500
Subject: [PATCH 2/2] no canonicalize path
---
src/sycoca/vfolder_menu.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/sycoca/vfolder_menu.cpp b/src/sycoca/vfolder_menu.cpp
index d3e31c3..d15d743 100644
--- a/src/sycoca/vfolder_menu.cpp
+++ b/src/sycoca/vfolder_menu.cpp
@@ -415,7 +415,7 @@ VFolderMenu::absoluteDir(const QString &_dir, const QString &baseDir, bool keepR
}
if (!relative) {
- QString resolved = QDir(dir).canonicalPath();
+ QString resolved = QDir::cleanPath(dir);
if (!resolved.isEmpty()) {
dir = resolved;
}
--
2.5.2

View File

@ -1,4 +1,4 @@
{ kdeFramework, lib, extra-cmake-modules, kconfig, kcoreaddons
{ kdeFramework, lib, copyPathsToStore, extra-cmake-modules, kconfig, kcoreaddons
, kcrash, kdbusaddons, kdoctools, ki18n, kwindowsystem
}:
@ -8,8 +8,5 @@ kdeFramework {
propagatedNativeBuildInputs = [ extra-cmake-modules ];
nativeBuildInputs = [ kdoctools ];
propagatedBuildInputs = [ kconfig kcoreaddons kcrash kdbusaddons ki18n kwindowsystem ];
patches = [
./0001-qdiriterator-follow-symlinks.patch
./0002-no-canonicalize-path.patch
];
patches = copyPathsToStore (lib.readPathsFromFile ./. ./series);
}

View File

@ -0,0 +1,25 @@
Index: kservice-5.21.0/src/sycoca/ksycocautils.cpp
===================================================================
--- kservice-5.21.0.orig/src/sycoca/ksycocautils.cpp
+++ kservice-5.21.0/src/sycoca/ksycocautils.cpp
@@ -24,9 +24,10 @@
void KSycocaUtilsPrivate::read(QDataStream &s, QString &str)
{
+ const qint32 bufferSize = 65528;
quint32 bytes;
s >> bytes; // read size of string
- if (bytes > 8192) { // null string or too big
+ if (bytes > bufferSize) { // null string or too big
if (bytes != 0xffffffff) {
KSycoca::flagError();
}
@@ -35,7 +36,7 @@ void KSycocaUtilsPrivate::read(QDataStre
int bt = bytes / 2;
str.resize(bt);
QChar *ch = str.data();
- char t[8192];
+ char t[bufferSize];
char *b = t;
s.readRawData(b, bytes);
while (bt--) {

View File

@ -0,0 +1,13 @@
Index: kservice-5.21.0/src/sycoca/vfolder_menu.cpp
===================================================================
--- kservice-5.21.0.orig/src/sycoca/vfolder_menu.cpp
+++ kservice-5.21.0/src/sycoca/vfolder_menu.cpp
@@ -415,7 +415,7 @@ VFolderMenu::absoluteDir(const QString &
}
if (!relative) {
- QString resolved = QDir(dir).canonicalPath();
+ QString resolved = QDir::cleanPath(dir);
if (!resolved.isEmpty()) {
dir = resolved;
}

View File

@ -0,0 +1,13 @@
Index: kservice-5.21.0/src/sycoca/kbuildsycoca.cpp
===================================================================
--- kservice-5.21.0.orig/src/sycoca/kbuildsycoca.cpp
+++ kservice-5.21.0/src/sycoca/kbuildsycoca.cpp
@@ -203,7 +203,7 @@ bool KBuildSycoca::build()
QSet<QString> relFiles;
const QStringList dirs = QStandardPaths::locateAll(QStandardPaths::GenericDataLocation, m_resourceSubdir, QStandardPaths::LocateDirectory);
Q_FOREACH (const QString &dir, dirs) {
- QDirIterator it(dir, QDirIterator::Subdirectories);
+ QDirIterator it(dir, QDirIterator::Subdirectories | QDirIterator::FollowSymlinks);
while (it.hasNext()) {
const QString filePath = it.next();
Q_ASSERT(filePath.startsWith(dir)); // due to the line below...

View File

@ -0,0 +1,3 @@
qdiriterator-follow-symlinks.patch
no-canonicalize-path.patch
ksycoca-buffer-size.patch