From ecabcef084a3df46498370434d0cfd2126a2a645 Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Sun, 13 Oct 2024 08:34:56 +0800 Subject: [PATCH] [Account.cpp] small modification xaccAccountSetLastNum if last-num is empty-string, remove the slot. this makes the behaviour consistent with other slots. --- libgnucash/engine/Account.cpp | 15 ++++++++++----- libgnucash/engine/test/utest-Account.cpp | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libgnucash/engine/Account.cpp b/libgnucash/engine/Account.cpp index 55cbfc6590..570ed46f1a 100644 --- a/libgnucash/engine/Account.cpp +++ b/libgnucash/engine/Account.cpp @@ -4812,13 +4812,18 @@ xaccAccountGetLastNum (const Account *acc) void xaccAccountSetLastNum (Account *acc, const char *num) { - GValue v = G_VALUE_INIT; g_return_if_fail(GNC_IS_ACCOUNT(acc)); - g_value_init (&v, G_TYPE_STRING); - - g_value_set_static_string (&v, num); xaccAccountBeginEdit (acc); - qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {"last-num"}); + if (num && *num) + { + GValue v = G_VALUE_INIT; + g_value_init (&v, G_TYPE_STRING); + g_value_set_static_string (&v, num); + qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {"last-num"}); + g_value_unset (&v); + } + else + qof_instance_set_path_kvp (QOF_INSTANCE (acc), nullptr, {"last-num"}); mark_account (acc); xaccAccountCommitEdit (acc); } diff --git a/libgnucash/engine/test/utest-Account.cpp b/libgnucash/engine/test/utest-Account.cpp index 1831d91109..7f8585c17d 100644 --- a/libgnucash/engine/test/utest-Account.cpp +++ b/libgnucash/engine/test/utest-Account.cpp @@ -1107,7 +1107,7 @@ test_gnc_account_kvp_setters_getters (Fixture *fixture, gconstpointer pData) g_assert_cmpstr (xaccAccountGetLastNum (account), ==, "red"); xaccAccountSetLastNum (account, ""); - g_assert_cmpstr (xaccAccountGetLastNum (account), ==, ""); + g_assert_cmpstr (xaccAccountGetLastNum (account), ==, nullptr); xaccAccountSetLastNum (account, " "); g_assert_cmpstr (xaccAccountGetLastNum (account), ==, " ");