Message ID | 20240823224630.1180772-2-e@80x24.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | cat-file speedups | expand |
On Fri, Aug 23, 2024 at 10:46:21PM +0000, Eric Wong wrote: > From: Jeff King <peff@peff.net> > > Moving the sizep computation now makes the next commit to avoid > redundant object info lookups easier to understand. There is > no user-visible change, here. > > [ew: commit message] > > Signed-off-by: Jeff King <peff@peff.net> > Signed-off-by: Eric Wong <e@80x24.org> > --- > packfile.c | 32 ++++++++++++++++---------------- > 1 file changed, 16 insertions(+), 16 deletions(-) > > diff --git a/packfile.c b/packfile.c > index 813584646f..4028763947 100644 > --- a/packfile.c > +++ b/packfile.c > @@ -1536,24 +1536,24 @@ int packed_object_info(struct repository *r, struct packed_git *p, > type = OBJ_BAD; > } else { > type = unpack_object_header(p, &w_curs, &curpos, &size); > - } Omitted from the context here is that the "if" statement which this "else" belongs to is "if (oi->contentp)", so placing the "if (oi->sizep)" conditional within the else block is equivalent to the pre-image as you suggest. With that additional detail, this patch looks obviously correct to me. Thanks, Taylor
diff --git a/packfile.c b/packfile.c index 813584646f..4028763947 100644 --- a/packfile.c +++ b/packfile.c @@ -1536,24 +1536,24 @@ int packed_object_info(struct repository *r, struct packed_git *p, type = OBJ_BAD; } else { type = unpack_object_header(p, &w_curs, &curpos, &size); - } - if (!oi->contentp && oi->sizep) { - if (type == OBJ_OFS_DELTA || type == OBJ_REF_DELTA) { - off_t tmp_pos = curpos; - off_t base_offset = get_delta_base(p, &w_curs, &tmp_pos, - type, obj_offset); - if (!base_offset) { - type = OBJ_BAD; - goto out; + if (oi->sizep) { + if (type == OBJ_OFS_DELTA || type == OBJ_REF_DELTA) { + off_t tmp_pos = curpos; + off_t base_offset = get_delta_base(p, &w_curs, &tmp_pos, + type, obj_offset); + if (!base_offset) { + type = OBJ_BAD; + goto out; + } + *oi->sizep = get_size_from_delta(p, &w_curs, tmp_pos); + if (*oi->sizep == 0) { + type = OBJ_BAD; + goto out; + } + } else { + *oi->sizep = size; } - *oi->sizep = get_size_from_delta(p, &w_curs, tmp_pos); - if (*oi->sizep == 0) { - type = OBJ_BAD; - goto out; - } - } else { - *oi->sizep = size; } }