Prevent infinite loop in ln_var() due to roundoff error.
authorTom Lane <[email protected]>
Fri, 14 Mar 2003 00:15:41 +0000 (00:15 +0000)
committerTom Lane <[email protected]>
Fri, 14 Mar 2003 00:15:41 +0000 (00:15 +0000)
Per report from Dave Marin.

src/backend/utils/adt/numeric.c

index f1967019d53ba7802440b005165dd432084a760f..6fcdeb37d24e54878e2cc040ac96a8679828e204 100644 (file)
@@ -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 */