|
1 | 1 | /* ----------------------------------------------------------------------- |
2 | 2 | * formatting.c |
3 | 3 | * |
4 | | - * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.83 2005/01/01 05:43:07 momjian Exp $ |
| 4 | + * $PostgreSQL: pgsql/src/backend/utils/adt/formatting.c,v 1.84 2005/01/13 01:40:13 tgl Exp $ |
5 | 5 | * |
6 | 6 | * |
7 | 7 | * Portions Copyright (c) 1999-2005, PostgreSQL Global Development Group |
@@ -1462,7 +1462,9 @@ get_th(char *num, int type) |
1462 | 1462 | staticchar* |
1463 | 1463 | str_numth(char*dest,char*num,inttype) |
1464 | 1464 | { |
1465 | | -sprintf(dest,"%s%s",num,get_th(num,type)); |
| 1465 | +if (dest!=num) |
| 1466 | +strcpy(dest,num); |
| 1467 | +strcat(dest,get_th(num,type)); |
1466 | 1468 | returndest; |
1467 | 1469 | } |
1468 | 1470 |
|
@@ -2057,6 +2059,7 @@ static int |
2057 | 2059 | dch_date(intarg,char*inout,intsuf,intflag,FormatNode*node,void*data) |
2058 | 2060 | { |
2059 | 2061 | charbuff[DCH_CACHE_SIZE], |
| 2062 | +workbuff[32], |
2060 | 2063 | *p_inout; |
2061 | 2064 | inti, |
2062 | 2065 | len; |
@@ -2117,7 +2120,6 @@ dch_date(int arg, char *inout, int suf, int flag, FormatNode *node, void *data) |
2117 | 2120 |
|
2118 | 2121 | switch (arg) |
2119 | 2122 | { |
2120 | | - |
2121 | 2123 | caseDCH_A_D: |
2122 | 2124 | caseDCH_B_C: |
2123 | 2125 | if (flag==TO_CHAR) |
@@ -2179,8 +2181,8 @@ dch_date(int arg, char *inout, int suf, int flag, FormatNode *node, void *data) |
2179 | 2181 | } |
2180 | 2182 | break; |
2181 | 2183 | caseDCH_MONTH: |
2182 | | -strcpy(inout,months_full[tm->tm_mon-1]); |
2183 | | -sprintf(inout,"%*s",S_FM(suf) ?0 :-9,str_toupper(inout)); |
| 2184 | +strcpy(workbuff,months_full[tm->tm_mon-1]); |
| 2185 | +sprintf(inout,"%*s",S_FM(suf) ?0 :-9,str_toupper(workbuff)); |
2184 | 2186 | if (S_FM(suf)) |
2185 | 2187 | returnstrlen(p_inout)-1; |
2186 | 2188 | else |
@@ -2242,8 +2244,8 @@ dch_date(int arg, char *inout, int suf, int flag, FormatNode *node, void *data) |
2242 | 2244 | } |
2243 | 2245 | break; |
2244 | 2246 | caseDCH_DAY: |
2245 | | -strcpy(inout,days[tm->tm_wday]); |
2246 | | -sprintf(inout,"%*s",S_FM(suf) ?0 :-9,str_toupper(inout)); |
| 2247 | +strcpy(workbuff,days[tm->tm_wday]); |
| 2248 | +sprintf(inout,"%*s",S_FM(suf) ?0 :-9,str_toupper(workbuff)); |
2247 | 2249 | if (S_FM(suf)) |
2248 | 2250 | returnstrlen(p_inout)-1; |
2249 | 2251 | else |
|