mirror of
https://github.com/postgres/postgres.git
synced 2025-06-13 07:41:39 +03:00
Fix more format truncation issues
Fix the warnings created by the compiler warning options
-Wformat-overflow=2 -Wformat-truncation=2, supported since GCC 7. This
is a more aggressive variant of the fixes in
6275f5d28a
, which GCC 7 warned about by
default.
The issues are all harmless, but some dubious coding patterns are
cleaned up.
One issue that is of external interest is that BGW_MAXLEN is increased
from 64 to 96. Apparently, the old value would cause the bgw_name of
logical replication workers to be truncated in some circumstances.
But this doesn't actually add those warning options. It appears that
the warnings depend a bit on compilation and optimization options, so it
would be annoying to have to keep up with that. This is more of a
once-in-a-while cleanup.
Reviewed-by: Michael Paquier <michael@paquier.xyz>
This commit is contained in:
@ -44,10 +44,6 @@ static const uint32 nan[2] = {0xffffffff, 0x7fffffff};
|
||||
#define NAN (*(const double *) nan)
|
||||
#endif
|
||||
|
||||
/* not sure what the following should be, but better to make it over-sufficient */
|
||||
#define MAXFLOATWIDTH 64
|
||||
#define MAXDOUBLEWIDTH 128
|
||||
|
||||
/*
|
||||
* check to see if a float4/8 val has underflowed or overflowed
|
||||
*/
|
||||
@ -360,18 +356,18 @@ Datum
|
||||
float4out(PG_FUNCTION_ARGS)
|
||||
{
|
||||
float4 num = PG_GETARG_FLOAT4(0);
|
||||
char *ascii = (char *) palloc(MAXFLOATWIDTH + 1);
|
||||
char *ascii;
|
||||
|
||||
if (isnan(num))
|
||||
PG_RETURN_CSTRING(strcpy(ascii, "NaN"));
|
||||
PG_RETURN_CSTRING(pstrdup("NaN"));
|
||||
|
||||
switch (is_infinite(num))
|
||||
{
|
||||
case 1:
|
||||
strcpy(ascii, "Infinity");
|
||||
ascii = pstrdup("Infinity");
|
||||
break;
|
||||
case -1:
|
||||
strcpy(ascii, "-Infinity");
|
||||
ascii = pstrdup("-Infinity");
|
||||
break;
|
||||
default:
|
||||
{
|
||||
@ -380,7 +376,7 @@ float4out(PG_FUNCTION_ARGS)
|
||||
if (ndig < 1)
|
||||
ndig = 1;
|
||||
|
||||
snprintf(ascii, MAXFLOATWIDTH + 1, "%.*g", ndig, num);
|
||||
ascii = psprintf("%.*g", ndig, num);
|
||||
}
|
||||
}
|
||||
|
||||
@ -596,18 +592,18 @@ float8out(PG_FUNCTION_ARGS)
|
||||
char *
|
||||
float8out_internal(double num)
|
||||
{
|
||||
char *ascii = (char *) palloc(MAXDOUBLEWIDTH + 1);
|
||||
char *ascii;
|
||||
|
||||
if (isnan(num))
|
||||
return strcpy(ascii, "NaN");
|
||||
return pstrdup("NaN");
|
||||
|
||||
switch (is_infinite(num))
|
||||
{
|
||||
case 1:
|
||||
strcpy(ascii, "Infinity");
|
||||
ascii = pstrdup("Infinity");
|
||||
break;
|
||||
case -1:
|
||||
strcpy(ascii, "-Infinity");
|
||||
ascii = pstrdup("-Infinity");
|
||||
break;
|
||||
default:
|
||||
{
|
||||
@ -616,7 +612,7 @@ float8out_internal(double num)
|
||||
if (ndig < 1)
|
||||
ndig = 1;
|
||||
|
||||
snprintf(ascii, MAXDOUBLEWIDTH + 1, "%.*g", ndig, num);
|
||||
ascii = psprintf("%.*g", ndig, num);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user