};
#define MODULE_LIST_INIT { 0 }
+static void module_list_release(struct module_list *ml)
+{
+ free(ml->entries);
+}
+
static int module_list_compute(int argc, const char **argv,
const char *prefix,
struct pathspec *pathspec,
active_modules.entries[active_modules.nr++] = ce;
}
- free(list->entries);
+ module_list_release(list);
*list = active_modules;
}
ret = 0;
cleanup:
+ module_list_release(&list);
clear_pathspec(&pathspec);
return ret;
}
ret = 0;
cleanup:
+ module_list_release(&list);
clear_pathspec(&pathspec);
return ret;
}
ret = 0;
cleanup:
+ module_list_release(&list);
clear_pathspec(&pathspec);
return ret;
}
ret = 0;
cleanup:
+ module_list_release(&list);
clear_pathspec(&pathspec);
return ret;
}
ret = 0;
cleanup:
+ module_list_release(&list);
clear_pathspec(&pathspec);
return ret;
}
};
#define SUBMODULE_UPDATE_CLONE_INIT { 0 }
+static void submodule_update_clone_release(struct submodule_update_clone *suc)
+{
+ free(suc->update_clone);
+ free(suc->failed_clones);
+}
+
struct update_data {
const char *prefix;
const char *displaypath;
.max_jobs = 1, \
}
+static void update_data_release(struct update_data *ud)
+{
+ module_list_release(&ud->list);
+}
+
static void next_submodule_warn_missing(struct submodule_update_clone *suc,
struct strbuf *out, const char *displaypath)
{
}
cleanup:
+ submodule_update_clone_release(&suc);
string_list_clear(&update_data->references, 0);
return ret;
}
if (module_list_compute(argc, argv, opt.prefix,
&pathspec2, &list) < 0) {
+ module_list_release(&list);
ret = 1;
goto cleanup;
}
info.flags |= OPT_QUIET;
for_each_listed_submodule(&list, init_submodule_cb, &info);
+ module_list_release(&list);
}
ret = update_submodules(&opt);
cleanup:
+ update_data_release(&opt);
list_objects_filter_release(&filter_options);
clear_pathspec(&pathspec);
clear_pathspec(&pathspec2);
ret = 0;
cleanup:
clear_pathspec(&pathspec);
+ module_list_release(&list);
return ret;
}