From c8a7b9edb3fd3d5140db77f9dbe23513dfabf839 Mon Sep 17 00:00:00 2001 From: Christopher Lam Date: Sun, 6 Jun 2021 22:58:47 +0800 Subject: [PATCH] [Account] g_value_unset --- libgnucash/engine/Account.cpp | 83 +++++++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 23 deletions(-) diff --git a/libgnucash/engine/Account.cpp b/libgnucash/engine/Account.cpp index e828b661c6..5cea5e022e 100644 --- a/libgnucash/engine/Account.cpp +++ b/libgnucash/engine/Account.cpp @@ -2481,6 +2481,7 @@ set_kvp_string_tag (Account *acc, const char *tag, const char *value) g_value_init (&v, G_TYPE_STRING); g_value_set_string (&v, tmp); qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {tag}); + g_value_unset (&v); } else qof_instance_set_path_kvp (QOF_INSTANCE (acc), NULL, {tag}); @@ -4036,21 +4037,24 @@ set_boolean_key (Account *acc, std::vector const & path, gboolean o qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, path); mark_account (acc); xaccAccountCommitEdit (acc); + g_value_unset (&v); } static gboolean boolean_from_key (const Account *acc, std::vector const & path) { GValue v = G_VALUE_INIT; + gboolean retval = FALSE; g_return_val_if_fail(GNC_IS_ACCOUNT(acc), FALSE); qof_instance_get_path_kvp (QOF_INSTANCE(acc), &v, path); if (G_VALUE_HOLDS_INT64 (&v)) - return g_value_get_int64 (&v) != 0; + retval = (g_value_get_int64 (&v) != 0); if (G_VALUE_HOLDS_BOOLEAN (&v)) - return g_value_get_boolean (&v); + retval = (g_value_get_boolean (&v)); if (G_VALUE_HOLDS_STRING (&v)) - return strcmp (g_value_get_string (&v), "true") == 0; - return FALSE; + retval = !strcmp (g_value_get_string (&v), "true"); + g_value_unset (&v); + return retval; } /********************************************************************\ @@ -4090,6 +4094,7 @@ xaccAccountSetTaxUSCode (Account *acc, const char *code) qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {"tax-US", "code"}); mark_account (acc); xaccAccountCommitEdit (acc); + g_value_unset (&v); } const char * @@ -4113,6 +4118,7 @@ xaccAccountSetTaxUSPayerNameSource (Account *acc, const char *source) qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {"tax-US", "payer-name-source"}); mark_account (acc); xaccAccountCommitEdit (acc); + g_value_unset (&v); } gint64 @@ -4125,6 +4131,7 @@ xaccAccountGetTaxUSCopyNumber (const Account *acc) if (G_VALUE_HOLDS_INT64 (&v)) copy_number = g_value_get_int64 (&v); + g_value_unset (&v); return (copy_number == 0) ? 1 : copy_number; } @@ -4139,6 +4146,7 @@ xaccAccountSetTaxUSCopyNumber (Account *acc, gint64 copy_number) g_value_init (&v, G_TYPE_INT64); g_value_set_int64 (&v, copy_number); qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {"tax-US", "copy-number"}); + g_value_unset (&v); } else { @@ -4627,18 +4635,21 @@ xaccAccountGetReconcileLastDate (const Account *acc, time64 *last_date) { gint64 date = 0; GValue v = G_VALUE_INIT; + gboolean retval = FALSE; g_return_val_if_fail(GNC_IS_ACCOUNT(acc), FALSE); qof_instance_get_path_kvp (QOF_INSTANCE(acc), &v, {KEY_RECONCILE_INFO, "last-date"}); if (G_VALUE_HOLDS_INT64 (&v)) date = g_value_get_int64 (&v); + g_value_unset (&v); if (date) { if (last_date) *last_date = date; - return TRUE; + retval = TRUE; } - return FALSE; + g_value_unset (&v); + return retval; } /********************************************************************\ @@ -4656,6 +4667,7 @@ xaccAccountSetReconcileLastDate (Account *acc, time64 last_date) qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {KEY_RECONCILE_INFO, "last-date"}); mark_account (acc); xaccAccountCommitEdit (acc); + g_value_unset (&v); } /********************************************************************\ @@ -4667,6 +4679,7 @@ xaccAccountGetReconcileLastInterval (const Account *acc, { GValue v1 = G_VALUE_INIT, v2 = G_VALUE_INIT; int64_t m = 0, d = 0; + gboolean retval = FALSE; if (!acc) return FALSE; g_return_val_if_fail(GNC_IS_ACCOUNT(acc), FALSE); @@ -4684,9 +4697,11 @@ xaccAccountGetReconcileLastInterval (const Account *acc, *months = m; if (days) *days = d; - return TRUE; + retval = TRUE; } - return FALSE; + g_value_unset (&v1); + g_value_unset (&v2); + return retval; } /********************************************************************\ @@ -4709,6 +4724,8 @@ xaccAccountSetReconcileLastInterval (Account *acc, int months, int days) {KEY_RECONCILE_INFO, "last-interval", "days"}); mark_account (acc); xaccAccountCommitEdit (acc); + g_value_unset (&v1); + g_value_unset (&v2); } /********************************************************************\ @@ -4718,6 +4735,7 @@ gboolean xaccAccountGetReconcilePostponeDate (const Account *acc, time64 *postpone_date) { gint64 date = 0; + gboolean retval = FALSE; GValue v = G_VALUE_INIT; g_return_val_if_fail(GNC_IS_ACCOUNT(acc), FALSE); qof_instance_get_path_kvp (QOF_INSTANCE(acc), &v, @@ -4729,9 +4747,10 @@ xaccAccountGetReconcilePostponeDate (const Account *acc, time64 *postpone_date) { if (postpone_date) *postpone_date = date; - return TRUE; + retval = TRUE; } - return FALSE; + g_value_unset (&v); + return retval; } /********************************************************************\ @@ -4750,6 +4769,7 @@ xaccAccountSetReconcilePostponeDate (Account *acc, time64 postpone_date) {KEY_RECONCILE_INFO, KEY_POSTPONE, "date"}); mark_account (acc); xaccAccountCommitEdit (acc); + g_value_unset (&v); } /********************************************************************\ @@ -4761,20 +4781,22 @@ xaccAccountGetReconcilePostponeBalance (const Account *acc, { gnc_numeric bal = gnc_numeric_zero (); GValue v = G_VALUE_INIT; + gboolean retval = FALSE; g_return_val_if_fail(GNC_IS_ACCOUNT(acc), FALSE); qof_instance_get_path_kvp (QOF_INSTANCE(acc), &v, {KEY_RECONCILE_INFO, KEY_POSTPONE, "balance"}); - if (!G_VALUE_HOLDS_INT64 (&v)) - return FALSE; - - bal = *(gnc_numeric*)g_value_get_boxed (&v); - if (!bal.denom) - return FALSE; - - if (balance) - *balance = bal; - - return TRUE; + if (G_VALUE_HOLDS_INT64 (&v)) + { + bal = *(gnc_numeric*)g_value_get_boxed (&v); + if (bal.denom) + { + if (balance) + *balance = bal; + retval = TRUE; + } + } + g_value_unset (&v); + return retval; } /********************************************************************\ @@ -4793,6 +4815,7 @@ xaccAccountSetReconcilePostponeBalance (Account *acc, gnc_numeric balance) {KEY_RECONCILE_INFO, KEY_POSTPONE, "balance"}); mark_account (acc); xaccAccountCommitEdit (acc); + g_value_unset (&v); } /********************************************************************\ @@ -4837,6 +4860,7 @@ xaccAccountSetLastNum (Account *acc, const char *num) qof_instance_set_path_kvp (QOF_INSTANCE (acc), &v, {"last-num"}); mark_account (acc); xaccAccountCommitEdit (acc); + g_value_unset (&v); } static Account * @@ -4909,6 +4933,7 @@ xaccAccountGainsAccount (Account *acc, gnc_commodity *curr) g_value_set_boxed (&vr, guid); qof_instance_set_path_kvp (QOF_INSTANCE (acc), &vr, path); qof_instance_set_dirty (QOF_INSTANCE (acc)); + g_value_unset (&vr); } xaccAccountCommitEdit (acc); } @@ -4916,6 +4941,7 @@ xaccAccountGainsAccount (Account *acc, gnc_commodity *curr) gains_account = xaccAccountLookup (guid, qof_instance_get_book(acc)); + g_value_unset (&v); return gains_account; } @@ -4936,6 +4962,7 @@ dxaccAccountSetPriceSrc(Account *acc, const char *src) g_value_init (&v, G_TYPE_STRING); g_value_set_string (&v, src); qof_instance_set_path_kvp (QOF_INSTANCE(acc), &v, {"old-price-source"}); + g_value_unset (&v); } else qof_instance_set_path_kvp (QOF_INSTANCE(acc), nullptr, {"old-price-source"}); @@ -5010,6 +5037,7 @@ xaccAccountSetReconcileChildrenStatus(Account *acc, gboolean status) {KEY_RECONCILE_INFO, KEY_INCLUDE_CHILDREN}); mark_account(acc); xaccAccountCommitEdit (acc); + g_value_unset (&v); } /********************************************************************\ @@ -5023,10 +5051,13 @@ xaccAccountGetReconcileChildrenStatus(const Account *acc) * the default behaviour */ GValue v = G_VALUE_INIT; + gboolean retval; if (!acc) return FALSE; qof_instance_get_path_kvp (QOF_INSTANCE (acc), &v, {KEY_RECONCILE_INFO, KEY_INCLUDE_CHILDREN}); - return G_VALUE_HOLDS_INT64 (&v) ? g_value_get_int64 (&v) : FALSE; + retval = G_VALUE_HOLDS_INT64 (&v) ? g_value_get_int64 (&v) : FALSE; + g_value_unset (&v); + return retval; } /********************************************************************\ @@ -5399,6 +5430,7 @@ gnc_account_imap_find_account (GncImportMatchMap *imap, { GValue v = G_VALUE_INIT; GncGUID * guid = NULL; + Account *retval; if (!imap || !key) return NULL; std::vector path {IMAP_FRAME}; if (category) @@ -5407,7 +5439,9 @@ gnc_account_imap_find_account (GncImportMatchMap *imap, qof_instance_get_path_kvp (QOF_INSTANCE (imap->acc), &v, path); if (G_VALUE_HOLDS_BOXED (&v)) guid = (GncGUID*)g_value_get_boxed (&v); - return xaccAccountLookup (guid, imap->book); + retval = xaccAccountLookup (guid, imap->book); + g_value_unset (&v); + return retval; } /* Store an Account in the map */ @@ -5429,6 +5463,7 @@ gnc_account_imap_add_account (GncImportMatchMap *imap, qof_instance_set_path_kvp (QOF_INSTANCE (imap->acc), &v, path); qof_instance_set_dirty (QOF_INSTANCE (imap->acc)); xaccAccountCommitEdit (imap->acc); + g_value_unset (&v); } /* Remove a reference to an Account in the map */ @@ -5798,6 +5833,7 @@ change_imap_entry (GncImportMatchMap *imap, std::string const & path, int64_t to // Add or Update the entry based on guid qof_instance_set_path_kvp (QOF_INSTANCE (imap->acc), &value, {path}); gnc_features_set_used (imap->book, GNC_FEATURE_GUID_FLAT_BAYESIAN); + g_value_unset (&value); } /** Updates the imap for a given account using a list of tokens */ @@ -5968,6 +6004,7 @@ gnc_account_get_map_entry (Account *acc, const char *head, const char *category) text = g_strdup (string); } } + g_value_unset (&v); return text; }