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