]> granicus.if.org Git - postgresql/commitdiff
Backpatch to 7.4 the part of 1.84 (from the 8.0 timeline) that wasn't already
authorAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 13 Jan 2009 15:28:42 +0000 (15:28 +0000)
committerAlvaro Herrera <alvherre@alvh.no-ip.org>
Tue, 13 Jan 2009 15:28:42 +0000 (15:28 +0000)
patched, viz. str_numth().  The rest of that patch was already applied as part
of 1.69.2.1.  Per report and patch from Andreas 'ads' Scherbaum.

The involved revisions were:

revision 1.84
date: 2005-01-12 22:40:13 -0300;  author: tgl;  state: Exp;  lines: +9 -7;
branches:  1.84.4;
Remove unportable assumption that it's okay to use the target buffer
of an sprintf() as a source string.  Demonstrably does not work with
recent gcc and/or glibc on some platforms.

and

revision 1.69.2.1
date: 2005-03-25 20:42:21 -0400;  author: tgl;  state: Exp;  lines: +24 -8;
Prevent to_char(interval) from dumping core on month-related formats
when a zero-month interval is given.  Per discussion with Karel.

src/backend/utils/adt/formatting.c

index a4f420042c053cc4bfb60d40025a7d64e2601bdd..6955f0bad518d8d28f4955024f6af99ae9c85c52 100644 (file)
@@ -1,7 +1,7 @@
 /* -----------------------------------------------------------------------
  * formatting.c
  *
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.69.2.2 2007/06/29 01:52:14 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/formatting.c,v 1.69.2.3 2009/01/13 15:28:42 alvherre Exp $
  *
  *
  *      Portions Copyright (c) 1999-2003, PostgreSQL Global Development Group
@@ -1444,7 +1444,9 @@ get_th(char *num, int type)
 static char *
 str_numth(char *dest, char *num, int type)
 {
-       sprintf(dest, "%s%s", num, get_th(num, type));
+       if (dest != num)
+               strcpy(dest, num);
+       strcat(dest, get_th(num, type));
        return dest;
 }
 
@@ -2097,7 +2099,6 @@ dch_date(int arg, char *inout, int suf, int flag, FormatNode *node, void *data)
 
        switch (arg)
        {
-
                case DCH_A_D:
                case DCH_B_C:
                        if (flag == TO_CHAR)