Bug 799347 - Edit account to make it sub account under other account

Send QOF_EVENT_REMOVE on the child before actually removing it from
the children vector so that the stored indexes are valid long enough
to clear them.
This commit is contained in:
John Ralls 2024-07-01 21:28:43 -07:00
parent 705a362ec6
commit 60ccca017f

View File

@ -2859,11 +2859,13 @@ gnc_account_remove_child (Account *parent, Account *child)
ed.node = parent;
ed.idx = gnc_account_child_index (parent, child);
// First send the event before we invalidate everything in children.
qof_event_gen(&child->inst, QOF_EVENT_REMOVE, &ed);
// Then remove the child and release its memory.
ppriv->children.erase (std::remove (ppriv->children.begin(), ppriv->children.end(), child),
ppriv->children.end());
/* Now send the event. */
qof_event_gen(&child->inst, QOF_EVENT_REMOVE, &ed);
/* clear the account's parent pointer after REMOVE event generation. */
cpriv->parent = nullptr;