revisions API users: use release_revisions() needing REV_INFO_INIT
Use release_revisions() to various users of "struct rev_list" which need to have their "struct rev_info" zero-initialized before we can start using it. For the bundle.c code see the early exit case added in3bbbe467f2
(bundle verify: error out if called without an object database, 2019-05-27). For the relevant bisect.c code see45b6370812
(bisect: libify `check_good_are_ancestors_of_bad` and its dependents, 2020-02-17). For the submodule.c code see the "goto" on "(!left || !right || !sub)" added in8e6df65015
(submodule: refactor show_submodule_summary with helper function, 2016-08-31). Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
296a143845
commit
f196c1e908
21
revision.h
21
revision.h
@ -329,6 +329,25 @@ struct rev_info {
|
||||
struct tmp_objdir *remerge_objdir;
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize the "struct rev_info" structure with a macro.
|
||||
*
|
||||
* This will not fully initialize a "struct rev_info", the
|
||||
* repo_init_revisions() function needs to be called before
|
||||
* setup_revisions() and any revision walking takes place.
|
||||
*
|
||||
* Use REV_INFO_INIT to make the "struct rev_info" safe for passing to
|
||||
* release_revisions() when it's inconvenient (e.g. due to a "goto
|
||||
* cleanup" pattern) to arrange for repo_init_revisions() to be called
|
||||
* before release_revisions() is called.
|
||||
*
|
||||
* Initializing with this REV_INFO_INIT is redundant to invoking
|
||||
* repo_init_revisions(). If repo_init_revisions() is guaranteed to be
|
||||
* called before release_revisions() the "struct rev_info" can be left
|
||||
* uninitialized.
|
||||
*/
|
||||
#define REV_INFO_INIT { 0 }
|
||||
|
||||
/**
|
||||
* Initialize a rev_info structure with default values. The third parameter may
|
||||
* be NULL or can be prefix path, and then the `.prefix` variable will be set
|
||||
@ -363,7 +382,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs,
|
||||
|
||||
/**
|
||||
* Free data allocated in a "struct rev_info" after it's been
|
||||
* initialized with repo_init_revisions().
|
||||
* initialized with repo_init_revisions() or REV_INFO_INIT.
|
||||
*/
|
||||
void release_revisions(struct rev_info *revs);
|
||||
|
||||
|
Reference in New Issue
Block a user