gnucash stable: [account.cpp] gnc_account_remove_split searches from the end
Christopher Lam
clam at code.gnucash.org
Tue May 21 08:31:33 EDT 2024
Updated via https://github.com/Gnucash/gnucash/commit/5aff4fb5 (commit)
from https://github.com/Gnucash/gnucash/commit/2d030c5a (commit)
commit 5aff4fb57d7c9723676f02d4ae9a0ac47bcdf442
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Tue May 21 20:29:17 2024 +0800
[account.cpp] gnc_account_remove_split searches from the end
because removing the latest split is far more common (e.g. from ui or
during book shutdown) than removing an early split.
diff --git a/libgnucash/engine/Account.cpp b/libgnucash/engine/Account.cpp
index e82fb8d9c0..294dfef09a 100644
--- a/libgnucash/engine/Account.cpp
+++ b/libgnucash/engine/Account.cpp
@@ -2002,8 +2002,11 @@ gnc_account_remove_split (Account *acc, Split *s)
if (!g_hash_table_remove (priv->splits_hash, s))
return false;
- auto it = std::remove (priv->splits.begin(), priv->splits.end(), s);
- priv->splits.erase (it, priv->splits.end());
+
+ // search splits in reverse, because removing the latest split is
+ // more common (e.g. from UI or during book shutdown)
+ auto rit = std::remove(priv->splits.rbegin(), priv->splits.rend(), s);
+ priv->splits.erase(rit.base(), priv->splits.end());
//FIXME: find better event type
qof_event_gen(&acc->inst, QOF_EVENT_MODIFY, nullptr);
// And send the account-based event, too
Summary of changes:
libgnucash/engine/Account.cpp | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
More information about the gnucash-changes
mailing list