diff options
Diffstat (limited to 'src/backend/utils/adt/numeric.c')
-rw-r--r-- | src/backend/utils/adt/numeric.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 8e19c1e6c98..3d7a17e30ef 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.6 1999/01/04 11:20:33 wieck Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/numeric.c,v 1.7 1999/01/04 12:53:23 wieck Exp $ * * ---------- */ @@ -2377,7 +2377,7 @@ apply_typmod(NumericVar *var, int32 typmod) } i = scale + var->weight + 1; - if (var->ndigits > i) + if (i >= 0 && var->ndigits > i) { long carry = (var->digits[i] > 4) ? 1 : 0; @@ -2396,6 +2396,10 @@ apply_typmod(NumericVar *var, int32 typmod) var->weight++; } } + else + { + var->ndigits = MAX(0, MIN(i, var->ndigits)); + } var->rscale = scale; var->dscale = scale; |