Fix addition of gnc_numeric that was wrong in r19511.

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@19588 57a11ea4-9604-0410-9ed3-97b8803252fd
pull/1/head
Christian Stimming 16 years ago
parent c791d53cf8
commit 75e9463b0a

@ -1491,6 +1491,9 @@ typedef struct {
static void add_to_hash_amount(GHashTable* hash, const GncGUID* guid, const gnc_numeric* amount)
{
/* Do we have a number belonging to this GUID in the hash? If yes,
* modify it in-place; if not, insert the new element into the
* hash. */
gnc_numeric* elem = g_hash_table_lookup(hash, guid);
if (!elem)
{
@ -1498,7 +1501,45 @@ static void add_to_hash_amount(GHashTable* hash, const GncGUID* guid, const gnc_
*elem = gnc_numeric_zero();
g_hash_table_insert(hash, (gpointer) guid, elem);
}
*elem = gnc_numeric_add_fixed(*elem, *amount);
/* Check input arguments for sanity */
if (gnc_numeric_check(*amount) != GNC_ERROR_OK)
{
g_critical("Oops, the given amount [%s] has the error code %d, at guid [%s].",
gnc_num_dbg_to_string(*amount),
gnc_numeric_check(*amount),
guid_to_string(guid));
return;
}
if (gnc_numeric_check(*elem) != GNC_ERROR_OK)
{
g_critical("Oops, the account's amount [%s] has the error code %d, at guid [%s].",
gnc_num_dbg_to_string(*elem),
gnc_numeric_check(*elem),
guid_to_string(guid));
return;
}
/* Watch out - don't use gnc_numeric_add_fixed here because it
* will refuse to add 1/5+1/10; instead, we have to use the flags
* as given here explicitly. Eventually, add the given amount to
* the entry in the hash. */
*elem = gnc_numeric_add(*elem, *amount,
GNC_DENOM_AUTO,
GNC_HOW_DENOM_REDUCE | GNC_HOW_RND_NEVER);
/* Check for sanity of the output. */
if (gnc_numeric_check(*elem) != GNC_ERROR_OK)
{
g_critical("Oops, after addition at guid [%s] the resulting amount [%s] has the error code %d; added amount = [%s].",
guid_to_string(guid),
gnc_num_dbg_to_string(*elem),
gnc_numeric_check(*elem),
gnc_num_dbg_to_string(*amount));
return;
}
/* In case anyone wants to see this in the debug log. */
g_debug("Adding to guid [%s] the value [%s]. Value now [%s].",
guid_to_string(guid),
gnc_num_dbg_to_string(*amount),

Loading…
Cancel
Save