Re: [Cocci] git-coccinelle: adjustments for array.cocci?
- From
- Markus Elfring <markus.elfring@web.de>
- Date
- Nov 16, 2019, 08:29 UTC
- Message-ID
- <22a03cac-160b-51be-b015-54ac600d3e92@web.de>
- In-Reply-To
- <alpine.DEB.2.21.1911152000170.8961@hadrien>
> 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