Message ID | patch-05.10-042080b8d6d-20211004T002226Z-avarab@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | unpack-trees & dir APIs: fix memory leaks | expand |
On Sun, Oct 3, 2021 at 5:46 PM Ævar Arnfjörð Bjarmason <avarab@gmail.com> wrote: The subject seems misleading; this patch doesn't make DIR_INIT mandatory, it is just updating the docs to reflect that and updating an out-of-date callsite. > > The dir_init() initializer has been documented as being mandatory > since eceba532141 (dir: fix problematic API to avoid memory leaks, > 2020-08-18), but both it and my ce93a4c6127 (dir.[ch]: replace > dir_init() with DIR_INIT, 2021-07-01) managed to miss this callsite in > "add-interactive.c" added before those two commits in > ab1e1cccaf6 (built-in add -i: re-implement `add-untracked` in C, > 2019-11-29). > > In addition my change to remove dir_init() neglected to update this > documentation. Let's use "must be initialized with" in reference to > "DIR_INIT". We have one lazy initialization which pre-dates > eceba532141 in dir.c. Adjusting this callsite is a prerequisite for > removing it in favor of trusting the macro to initialize the "struct > dir_struct" correctly. > > Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> > --- > add-interactive.c | 2 +- > dir.h | 2 +- > 2 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/add-interactive.c b/add-interactive.c > index 6498ae196f1..27daea8d1b3 100644 > --- a/add-interactive.c > +++ b/add-interactive.c > @@ -826,7 +826,7 @@ static int get_untracked_files(struct repository *r, > struct prefix_item_list *files, > const struct pathspec *ps) > { > - struct dir_struct dir = { 0 }; > + struct dir_struct dir = DIR_INIT; > size_t i; > struct strbuf buf = STRBUF_INIT; > > diff --git a/dir.h b/dir.h > index 83f46c0fb4c..ff3b4a7f602 100644 > --- a/dir.h > +++ b/dir.h > @@ -19,7 +19,7 @@ > * CE_SKIP_WORKTREE marked. If you want to exclude files, make sure you have > * loaded the index first. > * > - * - Prepare `struct dir_struct dir` using `dir_init()` function. > + * - The `struct dir_struct dir` must be initialized with `DIR_INIT`. > * > * - To add single exclude pattern, call `add_pattern_list()` and then > * `add_pattern()`. > -- > 2.33.0.1404.g83021034c5d ...other than the subject, the patch looks good
diff --git a/add-interactive.c b/add-interactive.c index 6498ae196f1..27daea8d1b3 100644 --- a/add-interactive.c +++ b/add-interactive.c @@ -826,7 +826,7 @@ static int get_untracked_files(struct repository *r, struct prefix_item_list *files, const struct pathspec *ps) { - struct dir_struct dir = { 0 }; + struct dir_struct dir = DIR_INIT; size_t i; struct strbuf buf = STRBUF_INIT; diff --git a/dir.h b/dir.h index 83f46c0fb4c..ff3b4a7f602 100644 --- a/dir.h +++ b/dir.h @@ -19,7 +19,7 @@ * CE_SKIP_WORKTREE marked. If you want to exclude files, make sure you have * loaded the index first. * - * - Prepare `struct dir_struct dir` using `dir_init()` function. + * - The `struct dir_struct dir` must be initialized with `DIR_INIT`. * * - To add single exclude pattern, call `add_pattern_list()` and then * `add_pattern()`.
The dir_init() initializer has been documented as being mandatory since eceba532141 (dir: fix problematic API to avoid memory leaks, 2020-08-18), but both it and my ce93a4c6127 (dir.[ch]: replace dir_init() with DIR_INIT, 2021-07-01) managed to miss this callsite in "add-interactive.c" added before those two commits in ab1e1cccaf6 (built-in add -i: re-implement `add-untracked` in C, 2019-11-29). In addition my change to remove dir_init() neglected to update this documentation. Let's use "must be initialized with" in reference to "DIR_INIT". We have one lazy initialization which pre-dates eceba532141 in dir.c. Adjusting this callsite is a prerequisite for removing it in favor of trusting the macro to initialize the "struct dir_struct" correctly. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- add-interactive.c | 2 +- dir.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-)