gnucash maint: Multiple changes pushed
Christopher Lam
clam at code.gnucash.org
Wed Jan 19 06:16:45 EST 2022
Updated via https://github.com/Gnucash/gnucash/commit/f0de54ac (commit)
via https://github.com/Gnucash/gnucash/commit/87b0a41e (commit)
from https://github.com/Gnucash/gnucash/commit/0d8640f7 (commit)
commit f0de54ac7afbcba14309d4e0af92835d5aaeb7ee
Merge: 0d8640f70 87b0a41e9
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Wed Jan 19 19:16:14 2022 +0800
Merge branch 'maint-798406' into maint #1240
commit 87b0a41e9b0b4db6556523ce5e3009fa03dd7734
Author: Christopher Lam <christopher.lck at gmail.com>
Date: Fri Jan 7 16:24:03 2022 +0800
[Split.c] return price==0 instead of 1, if !split, or amt==0
diff --git a/libgnucash/engine/Split.c b/libgnucash/engine/Split.c
index 31ede94c6..406ab8603 100644
--- a/libgnucash/engine/Split.c
+++ b/libgnucash/engine/Split.c
@@ -1196,6 +1196,10 @@ void
xaccSplitSetSharePrice (Split *s, gnc_numeric price)
{
if (!s) return;
+
+ if (gnc_numeric_zero_p (price))
+ return;
+
ENTER (" ");
xaccTransBeginEdit (s->parent);
@@ -1927,22 +1931,18 @@ gnc_numeric
xaccSplitGetSharePrice (const Split * split)
{
gnc_numeric amt, val, price;
- if (!split) return gnc_numeric_create(1, 1);
+ if (!split) return gnc_numeric_create(0, 1);
- /* if amount == 0 and value == 0, then return 1.
- * if amount == 0 and value != 0 then return 0.
+ /* if amount == 0, return 0
* otherwise return value/amount
*/
amt = xaccSplitGetAmount(split);
val = xaccSplitGetValue(split);
if (gnc_numeric_zero_p(amt))
- {
- if (gnc_numeric_zero_p(val))
- return gnc_numeric_create(1, 1);
return gnc_numeric_create(0, 1);
- }
+
price = gnc_numeric_div(val, amt,
GNC_DENOM_AUTO,
GNC_HOW_RND_ROUND_HALF_UP);
diff --git a/libgnucash/engine/test/utest-Split.cpp b/libgnucash/engine/test/utest-Split.cpp
index 93637627c..4d257c4d4 100644
--- a/libgnucash/engine/test/utest-Split.cpp
+++ b/libgnucash/engine/test/utest-Split.cpp
@@ -1669,7 +1669,7 @@ static void
test_xaccSplitGetSharePrice (Fixture *fixture, gconstpointer pData)
{
gnc_numeric result, quotient;
- gnc_numeric expected = gnc_numeric_create (1, 1);
+ gnc_numeric expected = gnc_numeric_create (0, 1);
Split *split = fixture->split;
/* Warning: this is a define in Split.c */
char *logdomain = "gnc.engine";
@@ -1699,7 +1699,7 @@ test_xaccSplitGetSharePrice (Fixture *fixture, gconstpointer pData)
g_assert_cmpint (check.hits, ==, 0);
split->value = gnc_numeric_zero ();
- expected = gnc_numeric_create (1, 1);
+ expected = gnc_numeric_create (0, 1);
result = xaccSplitGetSharePrice (split);
g_assert (gnc_numeric_equal (result, expected));
g_assert_cmpint (check.hits, ==, 0);
Summary of changes:
libgnucash/engine/Split.c | 14 +++++++-------
libgnucash/engine/test/utest-Split.cpp | 4 ++--
2 files changed, 9 insertions(+), 9 deletions(-)
More information about the gnucash-changes
mailing list