From c1855793df6eb522961476bded86e3e6dfc5fb11 Mon Sep 17 00:00:00 2001 From: Jan Wieck Date: Mon, 4 Jan 1999 12:53:23 +0000 Subject: [PATCH] Fixed backend crashing bug in apply_typmod() Jan --- src/backend/utils/adt/numeric.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/backend/utils/adt/numeric.c b/src/backend/utils/adt/numeric.c index 8e19c1e6c9..3d7a17e30e 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;