diff options
author | Jan Wieck <JanWieck@Yahoo.com> | 1999-01-04 17:51:58 +0000 |
---|---|---|
committer | Jan Wieck <JanWieck@Yahoo.com> | 1999-01-04 17:51:58 +0000 |
commit | 1bbe55c79f8c9d7b97f89e5e32482c5280658cbf (patch) | |
tree | 320dcc46d8b55a05890a085b95412a62bbce2608 | |
parent | c1855793df6eb522961476bded86e3e6dfc5fb11 (diff) | |
download | postgresql-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.c | 21 |
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; + } } } |