gnucash maint: Multiple changes pushed

John Ralls jralls at code.gnucash.org
Fri Aug 27 15:39:02 EDT 2021


Updated	 via  https://github.com/Gnucash/gnucash/commit/57f73d70 (commit)
	 via  https://github.com/Gnucash/gnucash/commit/6cb509ea (commit)
	from  https://github.com/Gnucash/gnucash/commit/b4205246 (commit)



commit 57f73d70c725652e6acaf67c2a4a2be8c2ef027a
Merge: b42052464 6cb509ea7
Author: John Ralls <jralls at ceridwen.us>
Date:   Fri Aug 27 12:34:07 2021 -0700

    Merge Yordan Miladinov's denom_lcd into maint.


commit 6cb509ea7d247a565a057359f080fcd0a52a27c1
Author: Yordan Miladinov <jordanmiladinov at gmail.com>
Date:   Tue Aug 24 00:58:31 2021 +0300

    fix an uncaught exception: denom_lcd may throw an overflow exception if casting lcm to int64_t fails

diff --git a/libgnucash/engine/gnc-numeric.cpp b/libgnucash/engine/gnc-numeric.cpp
index c1142a546..277e01e0f 100644
--- a/libgnucash/engine/gnc-numeric.cpp
+++ b/libgnucash/engine/gnc-numeric.cpp
@@ -756,9 +756,9 @@ gnc_numeric_add(gnc_numeric a, gnc_numeric b,
     {
         return gnc_numeric_error(GNC_ERROR_ARG);
     }
-    denom = denom_lcd(a, b, denom, how);
     try
     {
+        denom = denom_lcd(a, b, denom, how);
         if ((how & GNC_NUMERIC_DENOM_MASK) != GNC_HOW_DENOM_EXACT)
         {
             GncNumeric an (a), bn (b);
@@ -810,9 +810,9 @@ gnc_numeric_sub(gnc_numeric a, gnc_numeric b,
     {
         return gnc_numeric_error(GNC_ERROR_ARG);
     }
-    denom = denom_lcd(a, b, denom, how);
     try
     {
+        denom = denom_lcd(a, b, denom, how);
         if ((how & GNC_NUMERIC_DENOM_MASK) != GNC_HOW_DENOM_EXACT)
         {
             GncNumeric an (a), bn (b);
@@ -863,9 +863,10 @@ gnc_numeric_mul(gnc_numeric a, gnc_numeric b,
     {
         return gnc_numeric_error(GNC_ERROR_ARG);
     }
-    denom = denom_lcd(a, b, denom, how);
+
     try
     {
+        denom = denom_lcd(a, b, denom, how);
         if ((how & GNC_NUMERIC_DENOM_MASK) != GNC_HOW_DENOM_EXACT)
         {
             GncNumeric an (a), bn (b);
@@ -917,9 +918,9 @@ gnc_numeric_div(gnc_numeric a, gnc_numeric b,
     {
         return gnc_numeric_error(GNC_ERROR_ARG);
     }
-    denom = denom_lcd(a, b, denom, how);
     try
     {
+        denom = denom_lcd(a, b, denom, how);
         if ((how & GNC_NUMERIC_DENOM_MASK) != GNC_HOW_DENOM_EXACT)
         {
             GncNumeric an (a), bn (b);



Summary of changes:
 libgnucash/engine/gnc-numeric.cpp | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)



More information about the gnucash-changes mailing list