gnucash stable: Multiple changes pushed

Christopher Lam clam at code.gnucash.org
Wed Jul 2 11:46:38 EDT 2025


Updated	 via  https://github.com/Gnucash/gnucash/commit/e48c2931 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/5fc64466 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/7e22685a (commit)
	from  https://github.com/Gnucash/gnucash/commit/e28f314d (commit)



commit e48c293143b9a95db84378b7e4afa50ce078eac5
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Wed Jun 25 09:26:41 2025 +0800

    [Split.cpp] use qof_instance kvp API for GncGUID*

diff --git a/libgnucash/engine/Split.cpp b/libgnucash/engine/Split.cpp
index d2b6892bc9..ad257808b4 100644
--- a/libgnucash/engine/Split.cpp
+++ b/libgnucash/engine/Split.cpp
@@ -1090,7 +1090,6 @@ void
 xaccSplitDetermineGainStatus (Split *split)
 {
     Split *other;
-    GValue v = G_VALUE_INIT;
     GncGUID *guid = nullptr;
 
     if (GAINS_STATUS_UNKNOWN != split->gains) return;
@@ -1103,9 +1102,9 @@ xaccSplitDetermineGainStatus (Split *split)
         return;
     }
 
-    qof_instance_get_kvp (QOF_INSTANCE (split), &v, 1, "gains-source");
-    if (G_VALUE_HOLDS_BOXED (&v))
-        guid = (GncGUID*)g_value_get_boxed (&v);
+    if (auto v = qof_instance_get_path_kvp<GncGUID*> (QOF_INSTANCE (split), {"gains-source"}))
+        guid = const_cast<GncGUID*>(*v);
+
     if (!guid)
     {
         // CHECKME: We leave split->gains_split alone.  Is that correct?
@@ -1120,7 +1119,6 @@ xaccSplitDetermineGainStatus (Split *split)
         other = (Split *) qof_collection_lookup_entity (col, guid);
         split->gains_split = other;
     }
-    g_value_unset (&v);
 }
 
 /********************************************************************\

commit 5fc64466a1d68f44972d0d007d35a865929fa0c6
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Jun 24 21:29:11 2025 +0800

    [Transaction.cpp] use qof_instance kvp API for GncGUID*

diff --git a/libgnucash/engine/Transaction.cpp b/libgnucash/engine/Transaction.cpp
index 35083da563..82a822cc87 100644
--- a/libgnucash/engine/Transaction.cpp
+++ b/libgnucash/engine/Transaction.cpp
@@ -2714,7 +2714,6 @@ Transaction *
 xaccTransReverse (Transaction *orig)
 {
     Transaction *trans;
-    GValue v = G_VALUE_INIT;
     g_return_val_if_fail(orig, nullptr);
 
     /* First edit, dirty, and commit orig to ensure that any trading
@@ -2737,10 +2736,8 @@ xaccTransReverse (Transaction *orig)
     });
 
     /* Now update the original with a pointer to the new one */
-    g_value_init (&v, GNC_TYPE_GUID);
-    g_value_set_static_boxed (&v, xaccTransGetGUID(trans));
-    qof_instance_set_kvp (QOF_INSTANCE (orig), &v, 1, TRANS_REVERSED_BY);
-    g_value_unset (&v);
+    qof_instance_set_path_kvp<GncGUID*> (QOF_INSTANCE (orig), guid_copy(xaccTransGetGUID(trans)),
+                                         {TRANS_REVERSED_BY});
 
     /* Make sure the reverse transaction is not read-only */
     xaccTransClearReadOnly(trans);
@@ -2753,17 +2750,9 @@ xaccTransReverse (Transaction *orig)
 Transaction *
 xaccTransGetReversedBy(const Transaction *trans)
 {
-    GValue v = G_VALUE_INIT;
-    Transaction *retval = nullptr;
     g_return_val_if_fail(trans, nullptr);
-    qof_instance_get_kvp (QOF_INSTANCE(trans), &v, 1, TRANS_REVERSED_BY);
-    if (G_VALUE_HOLDS_BOXED (&v))
-    {
-        GncGUID* guid = static_cast<GncGUID*>(g_value_get_boxed (&v));
-        retval = xaccTransLookup(guid, qof_instance_get_book (trans));
-    }
-    g_value_unset (&v);
-    return retval;
+    auto g = qof_instance_get_path_kvp<GncGUID*> (QOF_INSTANCE(trans), {TRANS_REVERSED_BY});
+    return g ? xaccTransLookup (*g, qof_instance_get_book (trans)) : nullptr;
 }
 
 /* ============================================================== */

commit 7e22685a1c7c65cb7a0dd179ff285a7c364af667
Author: Christopher Lam <christopher.lck at gmail.com>
Date:   Tue Jun 24 16:29:24 2025 +0800

    [Transaction.cpp] use qof_instance kvp API for int64_t

diff --git a/libgnucash/engine/Transaction.cpp b/libgnucash/engine/Transaction.cpp
index 830dd4f6e7..35083da563 100644
--- a/libgnucash/engine/Transaction.cpp
+++ b/libgnucash/engine/Transaction.cpp
@@ -2120,22 +2120,9 @@ xaccTransSetNotes (Transaction *trans, const char *notes)
 void
 xaccTransSetIsClosingTxn (Transaction *trans, gboolean is_closing)
 {
-    if (!trans) return;
     xaccTransBeginEdit(trans);
-
-    if (is_closing)
-    {
-        GValue v = G_VALUE_INIT;
-        g_value_init (&v, G_TYPE_INT64);
-        g_value_set_int64 (&v, 1);
-        qof_instance_set_kvp (QOF_INSTANCE (trans), &v, 1, trans_is_closing_str);
-        g_value_unset (&v);
-    }
-    else
-    {
-        qof_instance_set_kvp (QOF_INSTANCE (trans), nullptr, 1, trans_is_closing_str);
-    }
-    qof_instance_set_dirty(QOF_INSTANCE(trans));
+    auto val = is_closing ? std::make_optional<int64_t>(1) : std::nullopt;
+    qof_instance_set_path_kvp<int64_t> (QOF_INSTANCE(trans), val, {trans_is_closing_str});
     xaccTransCommitEdit(trans);
 }
 
@@ -2328,18 +2315,8 @@ xaccTransGetNotes (const Transaction *trans)
 gboolean
 xaccTransGetIsClosingTxn (const Transaction *trans)
 {
-    if (!trans) return FALSE;
-
-    GValue v = G_VALUE_INIT;
-    gboolean rv;
-    qof_instance_get_kvp (QOF_INSTANCE (trans), &v, 1, trans_is_closing_str);
-    if (G_VALUE_HOLDS_INT64 (&v))
-        rv = (g_value_get_int64 (&v) ? 1 : 0);
-    else
-        rv = 0;
-    g_value_unset (&v);
-
-    return rv;
+    auto rv{qof_instance_get_path_kvp<int64_t> (QOF_INSTANCE(trans), {trans_is_closing_str})};
+    return rv ? *rv != 0 : FALSE;
 }
 
 /********************************************************************\



Summary of changes:
 libgnucash/engine/Split.cpp       |  8 +++----
 libgnucash/engine/Transaction.cpp | 50 +++++++--------------------------------
 2 files changed, 11 insertions(+), 47 deletions(-)



More information about the gnucash-changes mailing list