File:  [cvs.NetBSD.org] / pkgsrc / finance / gnucash / patches / Attic / patch-libgnucash_engine_Account.cpp
Revision 1.1: download - view: text, annotated - select for diffs
Fri Jul 5 08:08:01 2024 UTC (7 months, 1 week ago) by wiz
Branches: MAIN
CVS tags: HEAD
gnucash: fix crash when editing/deleting accounts using upstream patch

From upstream.

Bump PKGREVISION.

$NetBSD: patch-libgnucash_engine_Account.cpp,v 1.1 2024/07/05 08:08:01 wiz Exp $

commit 60ccca017f1be3af2caebb8a9d0c82a197f1da4f
Author: John Ralls <jralls@ceridwen.us>
Date:   Mon Jul 1 21:28:43 2024 -0700

    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.

--- libgnucash/engine/Account.cpp.orig	2024-06-27 20:21:49.000000000 +0000
+++ libgnucash/engine/Account.cpp
@@ -2859,11 +2859,13 @@ gnc_account_remove_child (Account *paren
     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;

CVSweb <webmaster@jp.NetBSD.org>