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