aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/numeric.c
diff options
context:
space:
mode:
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;