> Anyway, someone who can reproduce the issue using the latest release > of Coccinelle would be in a better position to file a bug report. Hello, I repeated the discussed source code transformation approach together with the software combination “Coccinelle 1.0.8-00004-g842075f7” (OCaml 4.09). https://github.com/coccinelle/coccinelle/commits/master 1. Yesterday I checked the source files out for the software “Git” according to the commit “The first batch post 2.24 cycle”. https://github.com/git/git/commit/d9f6f3b6195a0ca35642561e530798ad1469bd41 2. I restored a previous development status by the following command. git show 921d49be86 | patch -p1 -R See also: https://public-inbox.org/git/53346d52-e096-c651-f70a-ce6ca4d82ff9@xxxxxx/ 3. I stored a generated patch based on the currently released SmPL script. https://github.com/git/git/blob/177fbab747da4f58cb2a8ce010b3515c86dd67c9/contrib/coccinelle/array.cocci 4. I applied the following patch then. diff --git a/contrib/coccinelle/array.cocci b/contrib/coccinelle/array.cocci index 46b8d2ee11..89df184bbd 100644 --- a/contrib/coccinelle/array.cocci +++ b/contrib/coccinelle/array.cocci @@ -12,27 +12,21 @@ T *ptr; T[] arr; expression E, n; @@ -( - memcpy(ptr, E, -- n * sizeof(*(ptr)) -+ n * sizeof(T) - ) -| - memcpy(arr, E, -- n * sizeof(*(arr)) -+ n * sizeof(T) - ) -| - memcpy(E, ptr, -- n * sizeof(*(ptr)) -+ n * sizeof(T) - ) -| - memcpy(E, arr, -- n * sizeof(*(arr)) -+ n * sizeof(T) - ) + memcpy( +( ptr, E, n * +- sizeof(*(ptr)) ++ sizeof(T) +| arr, E, n * +- sizeof(*(arr)) ++ sizeof(T) +| E, ptr, n * +- sizeof(*(ptr)) ++ sizeof(T) +| E, arr, n * +- sizeof(*(arr)) ++ sizeof(T) ) + ) @@ type T; I suggested in this way to move a bit of SmPL code. 5. I stored another generated patch based on the adjusted SmPL script. 6. I performed a corresponding file comparison. --- array-released.diff 2019-11-14 21:29:11.020576916 +0100 +++ array-reduced1.diff 2019-11-14 21:45:58.931956527 +0100 @@ -6,24 +6,10 @@ r->entry_count = t->entry_count; r->delta_depth = t->delta_depth; - memcpy(r->entries,t->entries,t->entry_count*sizeof(t->entries[0])); -+ COPY_ARRAY(r->entries, t->entries, t->entry_count); ++ memcpy(r->entries,t->entries,t->entry_count*sizeof(*(t->entries))); release_tree_content(t); return r; } -diff -u -p a/pretty.c b/pretty.c ---- a/pretty.c -+++ b/pretty.c -@@ -106,8 +106,8 @@ static void setup_commit_formats(void) - commit_formats_len = ARRAY_SIZE(builtin_formats); - builtin_formats_len = commit_formats_len; - ALLOC_GROW(commit_formats, commit_formats_len, commit_formats_alloc); -- memcpy(commit_formats, builtin_formats, -- sizeof(*builtin_formats)*ARRAY_SIZE(builtin_formats)); -+ COPY_ARRAY(commit_formats, builtin_formats, -+ ARRAY_SIZE(builtin_formats)); - - git_config(git_pretty_formats_config, NULL); - } diff -u -p a/packfile.c b/packfile.c --- a/packfile.c +++ b/packfile.c @@ -36,17 +22,6 @@ } else { ALLOC_GROW(poi_stack, poi_stack_nr+1, poi_stack_alloc); } -@@ -1698,8 +1698,8 @@ void *unpack_entry(struct repository *r, - && delta_stack == small_delta_stack) { - delta_stack_alloc = alloc_nr(delta_stack_nr); - ALLOC_ARRAY(delta_stack, delta_stack_alloc); -- memcpy(delta_stack, small_delta_stack, -- sizeof(*delta_stack)*delta_stack_nr); -+ COPY_ARRAY(delta_stack, small_delta_stack, -+ delta_stack_nr); - } else { - ALLOC_GROW(delta_stack, delta_stack_nr+1, delta_stack_alloc); - } diff -u -p a/compat/regex/regexec.c b/compat/regex/regexec.c --- a/compat/regex/regexec.c +++ b/compat/regex/regexec.c How do you think about the differences from this test result? Regards, Markus