Message ID | 35123410-245b-0e3f-7227-94c293b57182@web.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | mingw: use COPY_ARRAY for copying array | expand |
Hi René, On Tue, 12 Nov 2019, René Scharfe wrote: > Use the macro COPY_ARRAY to copy array elements. The result is shorter > and safer, as it infers the element type automatically and does a (very) > basic type compatibility check for its first two arguments. > > Coccinelle and contrib/coccinelle/array.cocci did not generate this > conversion due to the offset of 1 at both source and destination and > because the source is a const pointer; the semantic patch cautiously > handles only pure pointers and array references of the same type. > > Signed-off-by: René Scharfe <l.s.r@web.de> > --- Looks good to me. Thanks, Dscho > compat/mingw.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/compat/mingw.c b/compat/mingw.c > index fe609239dd..2f4654c968 100644 > --- a/compat/mingw.c > +++ b/compat/mingw.c > @@ -1566,7 +1566,7 @@ static int try_shell_exec(const char *cmd, char *const *argv) > while (argv[argc]) argc++; > ALLOC_ARRAY(argv2, argc + 1); > argv2[0] = (char *)cmd; /* full path to the script file */ > - memcpy(&argv2[1], &argv[1], sizeof(*argv) * argc); > + COPY_ARRAY(&argv2[1], &argv[1], argc); > exec_id = trace2_exec(prog, argv2); > pid = mingw_spawnv(prog, argv2, 1); > if (pid >= 0) { > -- > 2.24.0 > >
diff --git a/compat/mingw.c b/compat/mingw.c index fe609239dd..2f4654c968 100644 --- a/compat/mingw.c +++ b/compat/mingw.c @@ -1566,7 +1566,7 @@ static int try_shell_exec(const char *cmd, char *const *argv) while (argv[argc]) argc++; ALLOC_ARRAY(argv2, argc + 1); argv2[0] = (char *)cmd; /* full path to the script file */ - memcpy(&argv2[1], &argv[1], sizeof(*argv) * argc); + COPY_ARRAY(&argv2[1], &argv[1], argc); exec_id = trace2_exec(prog, argv2); pid = mingw_spawnv(prog, argv2, 1); if (pid >= 0) {
Use the macro COPY_ARRAY to copy array elements. The result is shorter and safer, as it infers the element type automatically and does a (very) basic type compatibility check for its first two arguments. Coccinelle and contrib/coccinelle/array.cocci did not generate this conversion due to the offset of 1 at both source and destination and because the source is a const pointer; the semantic patch cautiously handles only pure pointers and array references of the same type. Signed-off-by: René Scharfe <l.s.r@web.de> --- compat/mingw.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -- 2.24.0