aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/numeric.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-03-14 00:15:32 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-03-14 00:15:32 +0000
commit2a1ef30b5779edb9acd1bb69e9d4f4e1c7889f9e (patch)
tree8d5d6a26b98e3c9b0f114197882066c2e14bf578 /src/backend/utils/adt/numeric.c
parent6c4996fa6b635db71e2348025a7ba77d71da69f3 (diff)
downloadpostgresql-2a1ef30b5779edb9acd1bb69e9d4f4e1c7889f9e.tar.gz
postgresql-2a1ef30b5779edb9acd1bb69e9d4f4e1c7889f9e.zip
Prevent infinite loop in ln_var() due to roundoff error.
Per report from Dave Marin.
Diffstat (limited to 'src/backend/utils/adt/numeric.c')
-rw-r--r--src/backend/utils/adt/numeric.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index 1a21500a8b0..2214f570d6d 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 */