Fixed backend crashing bug in apply_typmod()
authorJan Wieck
Mon, 4 Jan 1999 12:53:23 +0000 (12:53 +0000)
committerJan Wieck
Mon, 4 Jan 1999 12:53:23 +0000 (12:53 +0000)
Jan

src/backend/utils/adt/numeric.c

index 8e19c1e6c98d8c7556e6e67e82f63f7e277a19fb..3d7a17e30ef5b46c965cf58dbce64740089c522a 100644 (file)
@@ -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;