Fix compiler warning in call_readline() (GH-10820)

Replace strncpy() with memcpy() in call_readline() to fix the
following warning, the NUL byte is written manually just after:

Modules/readline.c: In function ‘call_readline’:
Modules/readline.c:1303:9: warning: ‘strncpy’ output truncated before
terminating nul copying as many bytes from a string as its length
[-Wstringop-truncation]
         strncpy(p, q, n);
         ^~~~~~~~~~~~~~~~
Modules/readline.c:1279:9: note: length computed here
     n = strlen(p);
         ^~~~~~~~~
This commit is contained in:
Victor Stinner 2018-11-30 15:03:53 +01:00 committed by GitHub
parent b7c2182604
commit 1600f60414
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1240,7 +1240,7 @@ static char *
call_readline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt)
{
size_t n;
char *p, *q;
char *p;
int signal;
#ifdef SAVE_LOCALE
@ -1297,10 +1297,10 @@ call_readline(FILE *sys_stdin, FILE *sys_stdout, const char *prompt)
}
/* Copy the malloc'ed buffer into a PyMem_Malloc'ed one and
release the original. */
q = p;
char *q = p;
p = PyMem_RawMalloc(n+2);
if (p != NULL) {
strncpy(p, q, n);
memcpy(p, q, n);
p[n] = '\n';
p[n+1] = '\0';
}