diff options
author | Patrick Steinhardt <ps@pks.im> | 2023-12-11 12:08:03 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2023-12-11 18:23:16 +0300 |
commit | 829231dc203f777a32ebdbbaf66e7661a21ac74a (patch) | |
tree | 2a87e741cd205217d022aaa39ee6dd38cfacd5f1 /reftable/merged.h | |
parent | 9abda98149e0f164ac0532fc6ca89b337049b9c3 (diff) |
reftable/merged: reuse buffer to compute record keys
When iterating over entries in the merged iterator's queue, we compute
the key of each of the entries and write it into a buffer. We do not
reuse the buffer though and thus re-allocate it on every iteration,
which is wasteful given that we never transfer ownership of the
allocated bytes outside of the loop.
Refactor the code to reuse the buffer. This also fixes a potential
memory leak when `merged_iter_advance_subiter()` returns an error.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'reftable/merged.h')
-rw-r--r-- | reftable/merged.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/reftable/merged.h b/reftable/merged.h index 7d9f95d27e..d5b39dfe7f 100644 --- a/reftable/merged.h +++ b/reftable/merged.h @@ -31,6 +31,8 @@ struct merged_iter { uint8_t typ; int suppress_deletions; struct merged_iter_pqueue pq; + struct strbuf key; + struct strbuf entry_key; }; void merged_table_release(struct reftable_merged_table *mt); |