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

This commit is contained in:
Yordan Miladinov 2021-08-24 00:58:31 +03:00
parent 929cb3d0c1
commit 6cb509ea7d
No known key found for this signature in database
GPG Key ID: E8B0DD227BD63D7F

View File

@ -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);