diff options
author | Jan Wieck <JanWieck@Yahoo.com> | 1999-01-04 12:53:23 +0000 |
---|---|---|
committer | Jan Wieck <JanWieck@Yahoo.com> | 1999-01-04 12:53:23 +0000 |
commit | c1855793df6eb522961476bded86e3e6dfc5fb11 (patch) | |
tree | f83e3b304c5dddb18d88f251b4d9169f89dfb2d0 /src/backend/utils/adt/numeric.c | |
parent | e3a5ac283b7280d6b2cc794588b5fcc8caeb89b1 (diff) | |
download | postgresql-c1855793df6eb522961476bded86e3e6dfc5fb11.tar.gz postgresql-c1855793df6eb522961476bded86e3e6dfc5fb11.zip |
Fixed backend crashing bug in apply_typmod()
Jan
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; |