Thread (63 messages) 63 messages, 5 authors, 2024-10-18

Re: [PATCH v2 03/10] reftable/basics: provide new `reftable_buf` interface

From: Patrick Steinhardt <hidden>
Date: 2024-10-17 04:54:55

On Wed, Oct 16, 2024 at 04:56:52PM -0400, Taylor Blau wrote:
On Wed, Oct 16, 2024 at 10:42:44AM +0200, Patrick Steinhardt wrote:
quoted
On Tue, Oct 15, 2024 at 03:27:29PM -0400, Taylor Blau wrote:
quoted
On Tue, Oct 15, 2024 at 01:10:59AM -0400, Eric Sunshine wrote:
quoted
On Tue, Oct 15, 2024 at 12:38 AM Patrick Steinhardt [off-list ref] wrote:
quoted
On Mon, Oct 14, 2024 at 06:34:55PM -0400, Taylor Blau wrote:
quoted
On Mon, Oct 14, 2024 at 03:02:24PM +0200, Patrick Steinhardt wrote:
quoted
+/*
+ * Add the given bytes to the buffer. Returns 0 on success,
+ * REFTABLE_OUT_OF_MEMORY_ERROR on allocation failure.
+ */
+int reftable_buf_add(struct reftable_buf *buf, const void *data, size_t len);
Is there a reason that data is a void-pointer here and not a const char
*?
Only that it emulates `strbuf_add()`, which also uses a void pointer.
The reason for that is because strbuf is a generic byte-array which
may contain embedded NULs, and the `const void *` plus `len`
emphasizes this property, whereas `const char *` would imply a
C-string with no embedded NULs.
Thanks, that was the explanation I was missing. Perhaps it is worth
re-stating in the commit message here to avoid confusing readers like I
was when I first read Patrick's patch ;-).
Does it make sense to explicitly state how the interfaces look like
though? I don't do that for the other functions either, and for most of
the part I just reuse the exact same function arguments as we had with
the strbuf interface.
I don't feel very strongly about it, but I had suggested it because my
initial read of this patch confused me, and I had wondered if others may
be similarly confused.

For what it's worth, I was thinking something on the order of the
following added to the patch message:

    Note that the reftable_buf_add() function intentionally takes a "const
    void *" instead of a "const char *" (as does its strbuf counterpart,
    strbuf_add()) to emphasize that the buffer may contain NUL characters.

But, as I said, I don't feel very strongly about it.
You know: let me amend the function documentation itself. That feels way
less out of place compared to putting this info into the commit message
and has the benefit that a future reader of the code will know why we
have types without digging into the commit history.

Patrick
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help