apply: free unused fragments for submodule patch
We simply discarded the fragments that we are not going to use upon seeing a patch to update the submodule commit bound at path that we have not checked out. Free these fragments, not to leak them. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8192a2fafc
commit
9d16c2d514
@ -196,17 +196,20 @@ struct patch {
|
|||||||
struct patch *next;
|
struct patch *next;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static void free_fragment_list(struct fragment *list)
|
||||||
|
{
|
||||||
|
while (list) {
|
||||||
|
struct fragment *next = list->next;
|
||||||
|
if (list->free_patch)
|
||||||
|
free((char *)list->patch);
|
||||||
|
free(list);
|
||||||
|
list = next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void free_patch(struct patch *patch)
|
static void free_patch(struct patch *patch)
|
||||||
{
|
{
|
||||||
struct fragment *fragment = patch->fragments;
|
free_fragment_list(patch->fragments);
|
||||||
|
|
||||||
while (fragment) {
|
|
||||||
struct fragment *fragment_next = fragment->next;
|
|
||||||
if (fragment->patch != NULL && fragment->free_patch)
|
|
||||||
free((char *)fragment->patch);
|
|
||||||
free(fragment);
|
|
||||||
fragment = fragment_next;
|
|
||||||
}
|
|
||||||
free(patch->def_name);
|
free(patch->def_name);
|
||||||
free(patch->old_name);
|
free(patch->old_name);
|
||||||
free(patch->new_name);
|
free(patch->new_name);
|
||||||
@ -2992,7 +2995,10 @@ static int apply_data(struct patch *patch, struct stat *st, struct cache_entry *
|
|||||||
/*
|
/*
|
||||||
* There is no way to apply subproject
|
* There is no way to apply subproject
|
||||||
* patch without looking at the index.
|
* patch without looking at the index.
|
||||||
|
* NEEDSWORK: shouldn't this be flagged
|
||||||
|
* as an error???
|
||||||
*/
|
*/
|
||||||
|
free_fragment_list(patch->fragments);
|
||||||
patch->fragments = NULL;
|
patch->fragments = NULL;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user