Re: [Cocci] git-coccinelle: adjustments for array.cocci?
From: Markus Elfring <hidden>
Date: 2019-11-16 08:31:37
Also in:
cocci
It can determine the type of t->entries if it has access to the definition of the type of t.
I would like to point another implementation detail out. Another known function was also an update candidate. https://github.com/git/git/blob/9a1180fc304ad9831641e5788e9c8d3dfc10ccdd/pretty.c#L90 elfring@Sonne:~/Projekte/git/lokal> spatch contrib/coccinelle/array.cocci 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); }
This patch generation can work based on the following SmPL code combination. “… expression n, x; … - , (n) * \( sizeof(T) \| sizeof(*(x)) \) …” The asterisk should refer to a pointer expression within a sizeof operator. I got informed that the semantic patch language would support such a restriction. Thus I have tried out to specify the corresponding metavariables in this way. “… expression n; expression* x; …” But the shown diff hunk is not regenerated by this SmPL script variant. How should an array like “builtin_formats” (which is even defined in the same function) be treated by the Coccinelle software in such use cases? Regards, Markus