Fix core dump due to null-pointer dereference in to_char() when datetime
authorTom Lane <[email protected]>
Thu, 12 Mar 2009 00:54:04 +0000 (00:54 +0000)
committerTom Lane <[email protected]>
Thu, 12 Mar 2009 00:54:04 +0000 (00:54 +0000)
format codes are misapplied to a numeric argument.  (The code still produces
a pretty bogus error message in such cases, but I'll settle for stopping the
crash for now.)  Per bug #4700 from Sergey Burladyan.

Problem exists in all supported branches, so patch all the way back.
In HEAD, also clean up some ugly coding in the nearby cache management
code.

src/backend/utils/adt/formatting.c

index 6955f0bad518d8d28f4955024f6af99ae9c85c52..c821fad3a2f06e92c7e3b24a5bbf878e9d126b9c 100644 (file)
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------
  * formatting.c
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.69.2.3 2009/01/13 15:28:42 alvherre Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.69.2.4 2009/03/12 00:54:04 tgl Exp $
  *
  *
  *      Portions Copyright (c) 1999-2003, PostgreSQL Global Development Group
@@ -347,7 +347,7 @@ static int  DCHCounter = 0;
 
 /* global cache for --- number part */
 static NUMCacheEntry NUMCache[NUM_CACHE_FIELDS + 1];
-static NUMCacheEntry *last_NUMCacheEntry;
+static NUMCacheEntry *last_NUMCacheEntry = NUMCache + 0;
 
 static int     n_NUMCache = 0;         /* number of entries */
 static int     NUMCounter = 0;