From 8f22c4bed4a3da692cbfb042d5b671cd80fb00ec Mon Sep 17 00:00:00 2001 From: John Ralls Date: Wed, 28 Nov 2018 15:41:45 +0900 Subject: [PATCH] Localize variables, ensure that val_imbalance is set, test txn_curr != commodity once. Found by clang static analyzer. --- libgnucash/engine/Scrub.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/libgnucash/engine/Scrub.c b/libgnucash/engine/Scrub.c index 9f93b8d982..d6ff1075ff 100644 --- a/libgnucash/engine/Scrub.c +++ b/libgnucash/engine/Scrub.c @@ -683,7 +683,6 @@ gnc_transaction_balance_trading (Transaction *trans, Account *root) gnc_monetary *imbal_mon = imbalance_commod->data; gnc_commodity *commodity; gnc_numeric old_amount, new_amount; - gnc_numeric old_value, new_value, val_imbalance; const gnc_commodity *txn_curr = xaccTransGetCurrency (trans); commodity = gnc_monetary_commodity (*imbal_mon); @@ -697,11 +696,6 @@ gnc_transaction_balance_trading (Transaction *trans, Account *root) return; } - if (! gnc_commodity_equal (txn_curr, commodity)) - { - val_imbalance = gnc_transaction_get_commodity_imbalance (trans, commodity); - } - xaccTransBeginEdit (trans); old_amount = xaccSplitGetAmount (balance_split); @@ -719,8 +713,10 @@ gnc_transaction_balance_trading (Transaction *trans, Account *root) } else { - old_value = xaccSplitGetValue (balance_split); - new_value = gnc_numeric_sub (old_value, val_imbalance, + gnc_numeric val_imbalance = gnc_transaction_get_commodity_imbalance (trans, commodity); + + gnc_numeric old_value = xaccSplitGetValue (balance_split); + gnc_numeric new_value = gnc_numeric_sub (old_value, val_imbalance, gnc_commodity_get_fraction(txn_curr), GNC_HOW_RND_ROUND_HALF_UP);