From 40ec626c27f81b4b72b20fa1b25a82c81539c3b3 Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Tue, 27 Jun 2023 17:35:41 +0300 Subject: [PATCH] kdecore: MIME magic file parsing optimization Signed-off-by: Ivailo Monev --- kdecore/services/kmimetyperepository.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/kdecore/services/kmimetyperepository.cpp b/kdecore/services/kmimetyperepository.cpp index f28a588f..a54ad873 100644 --- a/kdecore/services/kmimetyperepository.cpp +++ b/kdecore/services/kmimetyperepository.cpp @@ -392,7 +392,7 @@ QList KMimeTypeRepository::parseMagicFile(QIODevice* file, const } QList matches; // toplevel matches (indent==0) int priority = 50; - QString mimeTypeName; + QByteArray mimeTypeName; static const int sharedmimeinfover = mimeDataBaseVersion(); static const int sharedmimeinfo200 = KDE_MAKE_VERSION(2, 0, 0); @@ -406,10 +406,11 @@ QList KMimeTypeRepository::parseMagicFile(QIODevice* file, const if (!mimeTypeName.isEmpty()) { // workaround for: // https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/144 - if (sharedmimeinfover <= sharedmimeinfo200 && mimeTypeName == QLatin1String("audio/x-mod")) { + if (sharedmimeinfover <= sharedmimeinfo200 && mimeTypeName == "audio/x-mod") { kDebug(servicesDebugArea()) << "Ignoring audio/x-mod magic rules"; } else { - rules.append(KMimeMagicRule(mimeTypeName, priority, matches)); + const QString mimeTypeNameStr = QString::fromLatin1(mimeTypeName.constData(), mimeTypeName.size()); + rules.append(KMimeMagicRule(mimeTypeNameStr, priority, matches)); } matches.clear(); mimeTypeName.clear(); @@ -418,8 +419,8 @@ QList KMimeTypeRepository::parseMagicFile(QIODevice* file, const break; // done // Parse new section - const QString line = QString::fromLatin1(file->readLine()); - const int pos = line.indexOf(QLatin1Char(':')); + const QByteArray line = file->readLine(); + const int pos = line.indexOf(':'); if (pos == -1) { // syntax error kWarning(servicesDebugArea()) << "Syntax error in " << mimeTypeName << " ':' not present in section name";