diff options
| author | luigi1111 <luigi1111w@gmail.com> | 2019-12-19 19:37:27 -0500 |
|---|---|---|
| committer | luigi1111 <luigi1111w@gmail.com> | 2019-12-19 19:37:27 -0500 |
| commit | 598de0f03fe2c1f3c9cddfb333e7dcdb0679002b (patch) | |
| tree | 56e5a543e988021033d61c562461783c32fefa2f /src/libwalletqt/SubaddressAccount.cpp | |
| parent | bd3b26c33da3bc2b7ce841671eb30118f32a12ef (diff) | |
| parent | e0ab9aa898fdd813c73ea3c47ffb0f9b5f80e9cf (diff) | |
| download | monzero-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.cpp | 28 |
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(); } |
