Merge pull request #8325 from luis-pereira/prevent-c++11-range-loop-detach

Prevent possible c++11 range-loop container detach
This commit is contained in:
Vladimir Golovnev
2018-02-22 16:28:04 +03:00
committed by GitHub
7 changed files with 35 additions and 12 deletions

View File

@@ -43,6 +43,7 @@
#include "../bittorrent/magneturi.h"
#include "../bittorrent/session.h"
#include "../asyncfilestorage.h"
#include "../global.h"
#include "../logger.h"
#include "../profile.h"
#include "../settingsstorage.h"
@@ -239,7 +240,7 @@ void AutoDownloader::importRules(const QByteArray &data, AutoDownloader::RulesFi
QByteArray AutoDownloader::exportRulesToJSONFormat() const
{
QJsonObject jsonObj;
for (const auto &rule : rules())
for (const auto &rule : copyAsConst(rules()))
jsonObj.insert(rule.name(), rule.toJsonObject());
return QJsonDocument(jsonObj).toJson();
@@ -247,15 +248,14 @@ QByteArray AutoDownloader::exportRulesToJSONFormat() const
void AutoDownloader::importRulesFromJSONFormat(const QByteArray &data)
{
const auto rules = rulesFromJSON(data);
for (const auto &rule : rules)
for (const auto &rule : copyAsConst(rulesFromJSON(data)))
insertRule(rule);
}
QByteArray AutoDownloader::exportRulesToLegacyFormat() const
{
QVariantHash dict;
for (const auto &rule : rules())
for (const auto &rule : copyAsConst(rules()))
dict[rule.name()] = rule.toLegacyDict();
QByteArray data;

View File

@@ -33,6 +33,7 @@
#include <QJsonObject>
#include <QJsonValue>
#include "base/global.h"
#include "rss_article.h"
using namespace RSS;
@@ -122,7 +123,7 @@ void Folder::addItem(Item *item)
connect(item, &Item::articleAboutToBeRemoved, this, &Item::articleAboutToBeRemoved);
connect(item, &Item::unreadCountChanged, this, &Folder::handleItemUnreadCountChanged);
for (auto article: item->articles())
for (auto article: copyAsConst(item->articles()))
emit newArticle(article);
if (item->unreadCount() > 0)
@@ -133,7 +134,7 @@ void Folder::removeItem(Item *item)
{
Q_ASSERT(m_items.contains(item));
for (auto article: item->articles())
for (auto article: copyAsConst(item->articles()))
emit articleAboutToBeRemoved(article);
item->disconnect(this);