]> granicus.if.org Git - postgresql/commitdiff
Prevent infinite loop in ln_var() due to roundoff error.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 14 Mar 2003 00:15:32 +0000 (00:15 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 14 Mar 2003 00:15:32 +0000 (00:15 +0000)
Per report from Dave Marin.

src/backend/utils/adt/numeric.c

index 1a21500a8b088d0da36691f66a7a1afa4bef871d..2214f570d6d77a5b6e27bfe7766f36422f8bf32e 100644 (file)
@@ -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 */