]> granicus.if.org Git - postgresql/commitdiff
Fixed backend crashing bug in apply_typmod()
authorJan Wieck <JanWieck@Yahoo.com>
Mon, 4 Jan 1999 12:53:23 +0000 (12:53 +0000)
committerJan Wieck <JanWieck@Yahoo.com>
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;