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>
This commit is contained in:
parent
b5101f9297
commit
23311f3542
@ -1489,6 +1489,7 @@ static void update_shallow(struct fetch_pack_args *args,
|
|||||||
rollback_lock_file(&shallow_lock);
|
rollback_lock_file(&shallow_lock);
|
||||||
} else
|
} else
|
||||||
commit_lock_file(&shallow_lock);
|
commit_lock_file(&shallow_lock);
|
||||||
|
alternate_shallow_file = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1512,6 +1513,7 @@ static void update_shallow(struct fetch_pack_args *args,
|
|||||||
&alternate_shallow_file,
|
&alternate_shallow_file,
|
||||||
&extra);
|
&extra);
|
||||||
commit_lock_file(&shallow_lock);
|
commit_lock_file(&shallow_lock);
|
||||||
|
alternate_shallow_file = NULL;
|
||||||
}
|
}
|
||||||
oid_array_clear(&extra);
|
oid_array_clear(&extra);
|
||||||
return;
|
return;
|
||||||
@ -1551,6 +1553,7 @@ static void update_shallow(struct fetch_pack_args *args,
|
|||||||
commit_lock_file(&shallow_lock);
|
commit_lock_file(&shallow_lock);
|
||||||
oid_array_clear(&extra);
|
oid_array_clear(&extra);
|
||||||
oid_array_clear(&ref);
|
oid_array_clear(&ref);
|
||||||
|
alternate_shallow_file = NULL;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user