aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/numeric.c
diff options
context:
space:
mode:
authorJan Wieck <JanWieck@Yahoo.com>1999-01-04 12:53:23 +0000
committerJan Wieck <JanWieck@Yahoo.com>1999-01-04 12:53:23 +0000
commitc1855793df6eb522961476bded86e3e6dfc5fb11 (patch)
treef83e3b304c5dddb18d88f251b4d9169f89dfb2d0 /src/backend/utils/adt/numeric.c
parente3a5ac283b7280d6b2cc794588b5fcc8caeb89b1 (diff)
downloadpostgresql-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.c8
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;