Improve parser for search engine versions.txt

The parse could fail when there is an extra empty line at the end of
file, this patch fixes it.
This commit is contained in:
Chocobo1 2018-11-03 00:30:21 +08:00 committed by sledgehammer999
commit 7fff06f07b
No known key found for this signature in database
GPG key ID: 6E4A2D025B7CC9A2

View file

@ -47,6 +47,7 @@
#include "base/net/downloadmanager.h"
#include "base/preferences.h"
#include "base/profile.h"
#include "base/utils/bytearray.h"
#include "base/utils/foreignapps.h"
#include "base/utils/fs.h"
#include "base/utils/misc.h"
@ -495,25 +496,24 @@ void SearchPluginManager::parseVersionInfo(const QByteArray &info)
{
QHash<QString, PluginVersion> updateInfo;
int numCorrectData = 0;
QList<QByteArray> lines = info.split('\n');
foreach (QByteArray line, lines) {
const QList<QByteArray> lines = Utils::ByteArray::splitToViews(info, "\n", QString::SkipEmptyParts);
for (QByteArray line : lines) {
line = line.trimmed();
if (line.isEmpty()) continue;
if (line.startsWith('#')) continue;
QList<QByteArray> list = line.split(' ');
const QList<QByteArray> list = Utils::ByteArray::splitToViews(line, ":", QString::SkipEmptyParts);
if (list.size() != 2) continue;
QString pluginName = QString(list.first());
if (!pluginName.endsWith(':')) continue;
const QString pluginName = list.first().trimmed();
const PluginVersion version = PluginVersion::tryParse(list.last().trimmed(), {});
pluginName.chop(1); // remove trailing ':'
PluginVersion version = PluginVersion::tryParse(list.last(), {});
if (version == PluginVersion()) continue;
if (!version.isValid()) continue;
++numCorrectData;
if (isUpdateNeeded(pluginName, version)) {
LogMsg(tr("Plugin %1 is outdated").arg(pluginName), Log::INFO);
LogMsg(tr("Plugin \"%1\" is outdated, updating to version %2").arg(pluginName, version), Log::INFO);
updateInfo[pluginName] = version;
}
}