Re: [RFC] coccinelle: detect struct strbuf passed by value
- From
Jeff King <peff@peff.net>
- Date
- Mar 15, 2026, 02:55 UTC
- Message-ID
- <20260315025508.GA926820@coredump.intra.peff.net>
- In-Reply-To
- <CAG7UgESKLMnO_4+PSJUt-TXJxFQyxEEfpCmJfMmTw2+rhT-HWw@mail.gmail.com>
On Sat, Mar 14, 2026 at 10:42:19PM +0530, Deveshi Dwivedi wrote:
Show 20 quoted lines
> A transformation rule achieves the same detection without the
> dependency. It rewrites a by-value strbuf parameter to a pointer.
> The resulting diff will not produce compilable code on its own
> (callers and the function body still need updating), but the spatch
> output alerts the developer that the signature needs attention.
> This is consistent with the other rules in strbuf.cocci, which also
> rewrite to the preferred form.
>
> The rule itself:
>
> @@
> identifier fn, param;
> @@
> fn(...,
> - struct strbuf param
> + struct strbuf *param
> ,...)
> {
> ...
> }This is much better than what I posted before. The real source of the problem is the functions which take strbufs by value, not the callsites that pass it to them (and mine was checking the latter).
And your use of "..." is better than what I had. I think mine insisted on having arguments after the strbuf, which is why it failed to find the case in save_untracked_files().
So the only question to me is whether people who hit the coccinelle suggestion might be confused by the patch output, since it doesn't carry any rationale. But I would rather catch the problem and risk confusion then have it go unnoticed.
-Peff