]> git.ipfire.org Git - thirdparty/git.git/commit - grep.c
grep: store grep_source buffer as const
authorJeff King <peff@peff.net>
Tue, 21 Sep 2021 03:51:28 +0000 (23:51 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 22 Sep 2021 18:59:50 +0000 (11:59 -0700)
commit1e66871608d1f6f4cd66e899ee33755bbf6deafa
treea49ccba002c03112965e659fe84d197869abab53
parent1a845fbc48f2613c0daab717ee934e066e65723d
grep: store grep_source buffer as const

Our grep_buffer() function takes a non-const buffer, which is confusing:
we don't take ownership of nor write to the buffer.

This mostly comes from the fact that the underlying grep_source struct
in which we store the buffer uses non-const pointer. The memory pointed
to by the struct is sometimes owned by us (for FILE or OID sources), and
sometimes not (for BUF sources).

Let's store it as const, which lets us err on the side of caution (i.e.,
the compiler will warn us if any of our code writes to or tries to free
it).

As a result, we must annotate the one place where we do free it by
casting away the constness. But that's a small price to pay for the
extra safety and clarity elsewhere (and indeed, it already had a comment
explaining why GREP_SOURCE_BUF _didn't_ free it).

And then we can mark grep_buffer() as taking a const buffer.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
grep.c
grep.h