submodule--helper: "struct pathspec" memory leak in module_update()
The module_update() function calls module_list_compute() twice, which in turn will reset the "struct pathspec" passed to it. Let's instead track two of them, and clear them both. Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Reviewed-by: Glen Choo <chooglen@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8fb201d4da
commit
4b9d12460d
@ -2561,6 +2561,7 @@ cleanup:
|
|||||||
static int module_update(int argc, const char **argv, const char *prefix)
|
static int module_update(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
struct pathspec pathspec = { 0 };
|
struct pathspec pathspec = { 0 };
|
||||||
|
struct pathspec pathspec2 = { 0 };
|
||||||
struct update_data opt = UPDATE_DATA_INIT;
|
struct update_data opt = UPDATE_DATA_INIT;
|
||||||
struct list_objects_filter_options filter_options = { 0 };
|
struct list_objects_filter_options filter_options = { 0 };
|
||||||
int ret;
|
int ret;
|
||||||
@ -2649,7 +2650,7 @@ static int module_update(int argc, const char **argv, const char *prefix)
|
|||||||
struct init_cb info = INIT_CB_INIT;
|
struct init_cb info = INIT_CB_INIT;
|
||||||
|
|
||||||
if (module_list_compute(argc, argv, opt.prefix,
|
if (module_list_compute(argc, argv, opt.prefix,
|
||||||
&pathspec, &list) < 0) {
|
&pathspec2, &list) < 0) {
|
||||||
ret = 1;
|
ret = 1;
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
@ -2672,6 +2673,7 @@ static int module_update(int argc, const char **argv, const char *prefix)
|
|||||||
cleanup:
|
cleanup:
|
||||||
list_objects_filter_release(&filter_options);
|
list_objects_filter_release(&filter_options);
|
||||||
clear_pathspec(&pathspec);
|
clear_pathspec(&pathspec);
|
||||||
|
clear_pathspec(&pathspec2);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user