Re: [HACKERS] new gcc 7.0.1 warnings - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: [HACKERS] new gcc 7.0.1 warnings
Date
Msg-id CAFj8pRANwE5jzVXd_jS51VR17GXJyG9dQQdrVTLqBzYenRT0Pg@mail.gmail.com
Whole thread Raw
In response to Re: [HACKERS] new gcc 7.0.1 warnings  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: [HACKERS] new gcc 7.0.1 warnings  (Alvaro Herrera <alvherre@2ndquadrant.com>)
List pgsql-hackers


2017-02-18 18:35 GMT+01:00 Tom Lane <tgl@sss.pgh.pa.us>:
Pavel Stehule <pavel.stehule@gmail.com> writes:
> float.c:382:5: note: ‘snprintf’ output between 2 and 311 bytes into a
> destination of size 65
> float.c:618:5: note: ‘snprintf’ output between 2 and 311 bytes into a
> destination of size 129

That's kind of annoying.  I suppose the point is that the compiler can't
see what precision we're selecting, and with sufficiently large precision
the output could be that wide.  But actually the precision should be small
enough to make that OK.

Do the warnings go away if you add some explicit guard to the precision
variable, say like this:

            {
                int            ndig = DBL_DIG + extra_float_digits;

                if (ndig < 1)
                    ndig = 1;
+               if (ndig > 50)
+                   ndig = 50;

This fix doesn't help

Regards

Pavel 

                snprintf(ascii, MAXDOUBLEWIDTH + 1, "%.*g", ndig, num);
            }

If not, I guess we could increase the size of the palloc'd strings,
but that seems wasteful.

                        regards, tom lane

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: [HACKERS] new gcc 7.0.1 warnings
Next
From: Tom Lane
Date:
Subject: Re: [HACKERS] Instability in select_parallel regression test