[Python-Dev] Fix strncpy warning with gcc 8 (#5840)

Serhiy Storchaka storchaka at gmail.com
Tue Mar 6 06:52:00 EST 2018


06.03.18 12:34, Xiang Zhang пише:
> https://github.com/python/cpython/commit/efd2bac1564f8141a4eab1bf8779b412974b8d69
> commit: efd2bac1564f8141a4eab1bf8779b412974b8d69
> branch: master
> author: Siddhesh Poyarekar <siddhesh.poyarekar at gmail.com>
> committer: Xiang Zhang <angwerzx at 126.com>
> date: 2018-03-06T18:34:35+08:00
> summary:
> 
> Fix strncpy warning with gcc 8 (#5840)
> 
> The length in strncpy is one char too short and as a result it leads
> to a build warning with gcc 8.  Comment out the strncpy since the
> interpreter aborts immediately after anyway.
> 
> files:
> M Python/pystrtod.c
> 
> diff --git a/Python/pystrtod.c b/Python/pystrtod.c
> index 9bf936386210..601f7c691edf 100644
> --- a/Python/pystrtod.c
> +++ b/Python/pystrtod.c
> @@ -1060,8 +1060,8 @@ format_float_short(double d, char format_code,
>           else {
>               /* shouldn't get here: Gay's code should always return
>                  something starting with a digit, an 'I',  or 'N' */
> -            strncpy(p, "ERR", 3);
> -            /* p += 3; */
> +            /* strncpy(p, "ERR", 3);
> +               p += 3; */
>               Py_UNREACHABLE();
>           }
>           goto exit;
> 

I think this code was added for purpose. In the case of programming 
error we could get meaningful value in post-mortal debugging. But after 
replacing assert(0) with Py_UNREACHABLE this perhaps lost a sense.

If this code is no longer needed it is better to remove it than keeping 
an obscure comment.

What are your thoughts @warsaw and @ericvsmith?

Py_UNREACHABLE was added in issue31338 by Barry. The original code was 
added in issue1580 by Eric Smith (maybe it was copied from other place).



More information about the Python-Dev mailing list