streaming: inline call to read_object_file_extended()

The open_istream_incore() function is the only direct user of
read_object_file_extended(), and the only caller which unsets the
lookup_replace flag. Since read_object_file_extended() is now just a
thin wrapper around oid_object_info_extended(), let's inline the call.
That will let us simplify read_object_file_extended() in the next patch.

The inlined version here is a few more lines because of the query setup,
but it's much more flexible, since we can pass (or omit) any flags we
want.

Note the updated comment in the istream struct definition. It was
already slightly wrong (we never called read_object(); it has been
read_object_file_extended() since day one), but should now be accurate.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jeff King 2023-01-07 08:49:15 -05:00 committed by Junio C Hamano
parent b25562e63f
commit 34728d7f30
1 changed files with 8 additions and 3 deletions

View File

@ -38,7 +38,7 @@ struct git_istream {
union {
struct {
char *buf; /* from read_object() */
char *buf; /* from oid_object_info_extended() */
unsigned long read_ptr;
} incore;
@ -388,12 +388,17 @@ static ssize_t read_istream_incore(struct git_istream *st, char *buf, size_t sz)
static int open_istream_incore(struct git_istream *st, struct repository *r,
const struct object_id *oid, enum object_type *type)
{
st->u.incore.buf = read_object_file_extended(r, oid, type, &st->size, 0);
struct object_info oi = OBJECT_INFO_INIT;
st->u.incore.read_ptr = 0;
st->close = close_istream_incore;
st->read = read_istream_incore;
return st->u.incore.buf ? 0 : -1;
oi.typep = type;
oi.sizep = &st->size;
oi.contentp = (void **)&st->u.incore.buf;
return oid_object_info_extended(r, oid, &oi,
OBJECT_INFO_DIE_IF_CORRUPT);
}
/*****************************************************************************