提交 c1855793 编写于 作者: J Jan Wieck

Fixed backend crashing bug in apply_typmod()

Jan
上级 e3a5ac28
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册