On Tue, Mar 26, 2019 at 10:53:26AM -0700, Jonathan Tan wrote: > @@ -1625,6 +1649,7 @@ struct ref *fetch_pack(struct fetch_pack_args *args, > { > struct ref *ref_cpy; > struct shallow_info si; > + struct oid_array shallows_scratch = OID_ARRAY_INIT; > > fetch_pack_setup(); > if (nr_sought) > @@ -1649,10 +1674,11 @@ struct ref *fetch_pack(struct fetch_pack_args *args, > die(_("no matching remote head")); > } > if (version == protocol_v2) { > - if (shallow && shallow->nr) > + if (shallow->nr) > BUG("Protocol V2 does not provide shallows at this point in the fetch"); > memset(&si, 0, sizeof(si)); > ref_cpy = do_fetch_pack_v2(args, fd, ref, sought, nr_sought, > + &shallows_scratch, &si, > pack_lockfile); > } else { > prepare_shallow_info(&si, shallow); > @@ -1680,6 +1706,7 @@ struct ref *fetch_pack(struct fetch_pack_args *args, > update_shallow(args, sought, nr_sought, &si); > cleanup: > clear_shallow_info(&si); > + oid_array_clear(&shallows_scratch); > return ref_cpy; > } Yeah, this is much clearer than what I posted earlier. Thanks for thinking it through. The patches look good to me, modulo the timing of the NULL thing I mentioned elsewhere. -Peff