aboutsummaryrefslogtreecommitdiff
path: root/src/libwalletqt/SubaddressAccount.cpp
diff options
context:
space:
mode:
authorluigi1111 <luigi1111w@gmail.com>2019-12-19 19:37:27 -0500
committerluigi1111 <luigi1111w@gmail.com>2019-12-19 19:37:27 -0500
commit598de0f03fe2c1f3c9cddfb333e7dcdb0679002b (patch)
tree56e5a543e988021033d61c562461783c32fefa2f /src/libwalletqt/SubaddressAccount.cpp
parentbd3b26c33da3bc2b7ce841671eb30118f32a12ef (diff)
parente0ab9aa898fdd813c73ea3c47ffb0f9b5f80e9cf (diff)
downloadmonzero-gui-598de0f03fe2c1f3c9cddfb333e7dcdb0679002b.tar.gz
monzero-gui-598de0f03fe2c1f3c9cddfb333e7dcdb0679002b.tar.xz
monzero-gui-598de0f03fe2c1f3c9cddfb333e7dcdb0679002b.zip
Merge pull request #2623
c9900c0 SubaddressAccount: drop useless getAll 'update' default argument (xiphon) e0ab9aa SubaddressAccount: fix use-after-free bug (xiphon)
Diffstat (limited to 'src/libwalletqt/SubaddressAccount.cpp')
-rw-r--r--src/libwalletqt/SubaddressAccount.cpp28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/libwalletqt/SubaddressAccount.cpp b/src/libwalletqt/SubaddressAccount.cpp
index 47cd6410..940413a7 100644
--- a/src/libwalletqt/SubaddressAccount.cpp
+++ b/src/libwalletqt/SubaddressAccount.cpp
@@ -36,49 +36,57 @@ SubaddressAccount::SubaddressAccount(Monero::SubaddressAccount *subaddressAccoun
getAll();
}
-QList<Monero::SubaddressAccountRow*> SubaddressAccount::getAll(bool update) const
+void SubaddressAccount::getAll() const
{
qDebug(__FUNCTION__);
emit refreshStarted();
- if(update)
+ {
+ QWriteLocker locker(&m_lock);
m_rows.clear();
-
- if (m_rows.empty()){
for (auto &row: m_subaddressAccountImpl->getAll()) {
m_rows.append(row);
}
}
emit refreshFinished();
- return m_rows;
}
-Monero::SubaddressAccountRow * SubaddressAccount::getRow(int index) const
+bool SubaddressAccount::getRow(int index, std::function<void (Monero::SubaddressAccountRow &)> callback) const
{
- return m_rows.at(index);
+ QReadLocker locker(&m_lock);
+
+ if (index < 0 || index >= m_rows.size())
+ {
+ return false;
+ }
+
+ callback(*m_rows.value(index));
+ return true;
}
void SubaddressAccount::addRow(const QString &label) const
{
m_subaddressAccountImpl->addRow(label.toStdString());
- getAll(true);
+ getAll();
}
void SubaddressAccount::setLabel(quint32 accountIndex, const QString &label) const
{
m_subaddressAccountImpl->setLabel(accountIndex, label.toStdString());
- getAll(true);
+ getAll();
}
void SubaddressAccount::refresh() const
{
m_subaddressAccountImpl->refresh();
- getAll(true);
+ getAll();
}
quint64 SubaddressAccount::count() const
{
+ QReadLocker locker(&m_lock);
+
return m_rows.size();
}