aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Wieck <JanWieck@Yahoo.com>1999-01-04 17:51:58 +0000
committerJan Wieck <JanWieck@Yahoo.com>1999-01-04 17:51:58 +0000
commit1bbe55c79f8c9d7b97f89e5e32482c5280658cbf (patch)
tree320dcc46d8b55a05890a085b95412a62bbce2608
parentc1855793df6eb522961476bded86e3e6dfc5fb11 (diff)
downloadpostgresql-1bbe55c79f8c9d7b97f89e5e32482c5280658cbf.tar.gz
postgresql-1bbe55c79f8c9d7b97f89e5e32482c5280658cbf.zip
Just one more bugfix - this time in cmp_abs (cannot imagine that
taking a logarithm with a 400 digit precision worked with that bug in place). Jan
-rw-r--r--src/backend/utils/adt/numeric.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c
index 3d7a17e30ef..34a7b394310 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.7 1999/01/04 12:53:23 wieck Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.8 1999/01/04 17:51:58 wieck Exp $
*
* ----------
*/
@@ -3438,25 +3438,28 @@ cmp_abs(NumericVar *var1, NumericVar *var2)
int w2 = var2->weight;
int stat;
- while (w1 > w2)
+ while (w1 > w2 && i1 < var1->ndigits)
{
if (var1->digits[i1++] != 0) return 1;
w1--;
}
- while (w2 > w1)
+ while (w2 > w1 && i2 < var2->ndigits)
{
if (var2->digits[i2++] != 0) return -1;
w2--;
}
- while (i1 < var1->ndigits && i2 < var2->ndigits)
+ if (w1 == w2)
{
- stat = var1->digits[i1++] - var2->digits[i2++];
- if (stat)
+ while (i1 < var1->ndigits && i2 < var2->ndigits)
{
- if (stat > 0)
- return 1;
- return -1;
+ stat = var1->digits[i1++] - var2->digits[i2++];
+ if (stat)
+ {
+ if (stat > 0)
+ return 1;
+ return -1;
+ }
}
}