Browse Source

fetch-pack: clear alternate shallow when complete

When we write an alternate shallow file in update_shallow, we write it
into the lock file. The string stored in alternate_shallow_file is
copied from the lock file path, but it is freed the moment that the lock
file is closed, since we call strbuf_release to free that path.

This used to work, since we did not invoke git index-pack more than
once, but now that we do, we reuse the freed memory. Ensure we reset the
value to NULL to avoid using freed memory. git index-pack will read the
repository's shallow file, which will have been updated with the correct
information.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
brian m. carlson 6 years ago committed by Junio C Hamano
parent
commit
23311f3542
  1. 3
      fetch-pack.c

3
fetch-pack.c

@ -1489,6 +1489,7 @@ static void update_shallow(struct fetch_pack_args *args, @@ -1489,6 +1489,7 @@ static void update_shallow(struct fetch_pack_args *args,
rollback_lock_file(&shallow_lock);
} else
commit_lock_file(&shallow_lock);
alternate_shallow_file = NULL;
return;
}

@ -1512,6 +1513,7 @@ static void update_shallow(struct fetch_pack_args *args, @@ -1512,6 +1513,7 @@ static void update_shallow(struct fetch_pack_args *args,
&alternate_shallow_file,
&extra);
commit_lock_file(&shallow_lock);
alternate_shallow_file = NULL;
}
oid_array_clear(&extra);
return;
@ -1551,6 +1553,7 @@ static void update_shallow(struct fetch_pack_args *args, @@ -1551,6 +1553,7 @@ static void update_shallow(struct fetch_pack_args *args,
commit_lock_file(&shallow_lock);
oid_array_clear(&extra);
oid_array_clear(&ref);
alternate_shallow_file = NULL;
return;
}


Loading…
Cancel
Save