reftable/writer: reset `last_key` instead of releasing it
commit8aaeffe3b5b85f996ac82ec4b0b0e538f4b5a0ac
authorPatrick Steinhardt <ps@pks.im>
Mon, 8 Apr 2024 12:24:30 +0000 (8 14:24 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 Apr 2024 00:01:41 +0000 (8 17:01 -0700)
tree2e5b94030e0720f6792ecbc4e8001b81d29a6a76
parent60dd319519b41cc5cc79bdef5ee8556297db6984
reftable/writer: reset `last_key` instead of releasing it

The reftable writer tracks the last key that it has written so that it
can properly compute the compressed prefix for the next record it is
about to write. This last key must be reset whenever we move on to write
the next block, which is done in `writer_reinit_block_writer()`. We do
this by calling `strbuf_release()` though, which needlessly deallocates
the underlying buffer.

Convert the code to use `strbuf_reset()` instead, which saves one
allocation per block we're about to write. This requires us to also
amend `reftable_writer_free()` to release the buffer's memory now as we
previously seemingly relied on `writer_reinit_block_writer()` to release
the memory for us. Releasing memory here is the right thing to do
anyway.

While at it, convert a callsite where we truncate the buffer by setting
its length to zero to instead use `strbuf_reset()`, too.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
reftable/writer.c