# [PATCH] cocci: strbuf.buf is never NULL

2 messages from 2026-03-19 to 2026-03-20. Participants: Junio C Hamano, Derrick Stolee.
Thread: https://gitlist.dev/t/65311

## Junio C Hamano, 2026-03-19 22:39

Subject: [PATCH] cocci: strbuf.buf is never NULL
Message-ID: <xmqq4imbigvt.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqq4imbigvt.fsf%40gitster.g

```
We recently noticed one old code from 19 years ago protecting
against an ancient strbuf convention that the .buf member can be
NULL for an empty strbuf.  As that is no longer the case in the
modern codebase, let's catch such a construct.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 * Comes directly on top of my recent rerere.c clean-up patch.

 contrib/coccinelle/strbuf.cocci | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/contrib/coccinelle/strbuf.cocci b/contrib/coccinelle/strbuf.cocci
index 5f06105df6..13f0ad2679 100644
--- a/contrib/coccinelle/strbuf.cocci
+++ b/contrib/coccinelle/strbuf.cocci
@@ -60,3 +60,10 @@ expression E1, E2;
 @@
 - strbuf_addstr(E1, real_path(E2));
 + strbuf_add_real_path(E1, E2);
+
+// In modern codebase, .buf member of an empty strbuf is not NULL.
+@@
+struct strbuf SB;
+@@
+- SB.buf ? SB.buf : ""
++ SB.buf
-- 
2.53.0-816-g44373249a2


```

## Derrick Stolee, 2026-03-20 16:31

Subject: Re: [PATCH] cocci: strbuf.buf is never NULL
Message-ID: <228bfbe3-af2d-49b7-984e-cae7b1b8af28@gmail.com>
URL: https://gitlist.dev/e/228bfbe3-af2d-49b7-984e-cae7b1b8af28%40gmail.com
In-Reply-To: <xmqq4imbigvt.fsf@gitster.g>

```
On 3/19/2026 6:39 PM, Junio C Hamano wrote:
> We recently noticed one old code from 19 years ago protecting
> against an ancient strbuf convention that the .buf member can be
> NULL for an empty strbuf.  As that is no longer the case in the
> modern codebase, let's catch such a construct.

> +// In modern codebase, .buf member of an empty strbuf is not NULL.
> +@@
> +struct strbuf SB;
> +@@
> +- SB.buf ? SB.buf : ""
> ++ SB.buf

LGTM. I like to see these structural patterns encoded as rules.

Thanks,
-Stolee

```
