From: Tom Lane Date: Fri, 14 Mar 2003 00:15:32 +0000 (+0000) Subject: Prevent infinite loop in ln_var() due to roundoff error. X-Git-Tag: REL7_4_BETA1~940 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2a1ef30b5779edb9acd1bb69e9d4f4e1c7889f9e;p=postgresql Prevent infinite loop in ln_var() due to roundoff error. Per report from Dave Marin. --- diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 1a21500a8b..2214f570d6 100644 --- a/src/backend/utils/adt/numeric.c +++ b/src/backend/utils/adt/numeric.c @@ -5,7 +5,7 @@ * * 1998 Jan Wieck * - * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.57 2003/03/11 21:01:33 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.58 2003/03/14 00:15:32 tgl Exp $ * * ---------- */ @@ -3872,6 +3872,9 @@ ln_var(NumericVar *arg, NumericVar *result) break; add_var(result, &elem, result); + + if (elem.weight < (result->weight - 2 * global_rscale)) + break; } /* Compensate for argument range reduction, round to caller's rscale */