diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2003-03-14 00:15:41 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2003-03-14 00:15:41 +0000 |
commit | cebedc36ed05ff03c3f77795aed22c8ce29f8893 (patch) | |
tree | f7d2699d429ce28487f22ac6560c7e2b9a760ea1 | |
parent | d144f96bf0cc8aa6f59ad906616829e2f1a43be5 (diff) | |
download | postgresql-cebedc36ed05ff03c3f77795aed22c8ce29f8893.tar.gz postgresql-cebedc36ed05ff03c3f77795aed22c8ce29f8893.zip |
Prevent infinite loop in ln_var() due to roundoff error.
Per report from Dave Marin.
-rw-r--r-- | src/backend/utils/adt/numeric.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index f1967019d53..6fcdeb37d24 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.56 2002/10/19 02:08:17 momjian Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.56.2.1 2003/03/14 00:15:41 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 */ |