Merge branch 'sb/leaks'
* sb/leaks: http: release the memory of a http pack request as well read-cache: fix memleak add_to_index(): free unused cache-entry commit.c: fix a memory leak http-push: remove unneeded cleanup merge-recursive: fix memleaks merge-blobs.c: fix a memleak builtin/apply.c: fix a memleak update-index: fix a memleak read-cache: free cache entry in add_to_index in case of early return
This commit is contained in:
commit
553c622b68
@ -2776,7 +2776,8 @@ static int apply_one_fragment(struct image *img, struct fragment *frag,
|
||||
default:
|
||||
if (apply_verbosely)
|
||||
error(_("invalid start of line: '%c'"), first);
|
||||
return -1;
|
||||
applied_pos = -1;
|
||||
goto out;
|
||||
}
|
||||
if (added_blank_line) {
|
||||
if (!new_blank_lines_at_end)
|
||||
@ -2915,6 +2916,7 @@ static int apply_one_fragment(struct image *img, struct fragment *frag,
|
||||
(int)(old - oldlines), oldlines);
|
||||
}
|
||||
|
||||
out:
|
||||
free(oldlines);
|
||||
strbuf_release(&newlines);
|
||||
free(preimage.line_allocated);
|
||||
|
@ -229,7 +229,7 @@ static int commit_index_files(void)
|
||||
static int list_paths(struct string_list *list, const char *with_tree,
|
||||
const char *prefix, const struct pathspec *pattern)
|
||||
{
|
||||
int i;
|
||||
int i, ret;
|
||||
char *m;
|
||||
|
||||
if (!pattern->nr)
|
||||
@ -256,7 +256,9 @@ static int list_paths(struct string_list *list, const char *with_tree,
|
||||
item->util = item; /* better a valid pointer than a fake one */
|
||||
}
|
||||
|
||||
return report_path_error(m, pattern, prefix);
|
||||
ret = report_path_error(m, pattern, prefix);
|
||||
free(m);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void add_remove_files(struct string_list *list)
|
||||
|
@ -584,6 +584,7 @@ static int do_reupdate(int ac, const char **av,
|
||||
path = xstrdup(ce->name);
|
||||
update_one(path);
|
||||
free(path);
|
||||
free(old);
|
||||
if (save_nr != active_nr)
|
||||
goto redo;
|
||||
}
|
||||
|
@ -316,7 +316,6 @@ static void start_fetch_packed(struct transfer_request *request)
|
||||
|
||||
preq = new_http_pack_request(target, repo->url);
|
||||
if (preq == NULL) {
|
||||
release_http_pack_request(preq);
|
||||
repo->can_update_info_refs = 0;
|
||||
return;
|
||||
}
|
||||
|
1
http.c
1
http.c
@ -1462,6 +1462,7 @@ void release_http_pack_request(struct http_pack_request *preq)
|
||||
}
|
||||
preq->slot = NULL;
|
||||
free(preq->url);
|
||||
free(preq);
|
||||
}
|
||||
|
||||
int finish_http_pack_request(struct http_pack_request *preq)
|
||||
|
@ -14,8 +14,10 @@ static int fill_mmfile_blob(mmfile_t *f, struct blob *obj)
|
||||
buf = read_sha1_file(obj->object.sha1, &type, &size);
|
||||
if (!buf)
|
||||
return -1;
|
||||
if (type != OBJ_BLOB)
|
||||
if (type != OBJ_BLOB) {
|
||||
free(buf);
|
||||
return -1;
|
||||
}
|
||||
f->ptr = buf;
|
||||
f->size = size;
|
||||
return 0;
|
||||
|
@ -1858,6 +1858,9 @@ int merge_trees(struct merge_options *o,
|
||||
string_list_clear(re_head, 0);
|
||||
string_list_clear(entries, 1);
|
||||
|
||||
free(re_merge);
|
||||
free(re_head);
|
||||
free(entries);
|
||||
}
|
||||
else
|
||||
clean = 1;
|
||||
|
22
read-cache.c
22
read-cache.c
@ -681,15 +681,18 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
|
||||
alias = index_file_exists(istate, ce->name, ce_namelen(ce), ignore_case);
|
||||
if (alias && !ce_stage(alias) && !ie_match_stat(istate, alias, st, ce_option)) {
|
||||
/* Nothing changed, really */
|
||||
free(ce);
|
||||
if (!S_ISGITLINK(alias->ce_mode))
|
||||
ce_mark_uptodate(alias);
|
||||
alias->ce_flags |= CE_ADDED;
|
||||
|
||||
free(ce);
|
||||
return 0;
|
||||
}
|
||||
if (!intent_only) {
|
||||
if (index_path(ce->sha1, path, st, HASH_WRITE_OBJECT))
|
||||
if (index_path(ce->sha1, path, st, HASH_WRITE_OBJECT)) {
|
||||
free(ce);
|
||||
return error("unable to index file %s", path);
|
||||
}
|
||||
} else
|
||||
set_object_name_for_intent_to_add_entry(ce);
|
||||
|
||||
@ -704,9 +707,11 @@ int add_to_index(struct index_state *istate, const char *path, struct stat *st,
|
||||
ce->ce_mode == alias->ce_mode);
|
||||
|
||||
if (pretend)
|
||||
;
|
||||
else if (add_index_entry(istate, ce, add_option))
|
||||
return error("unable to add %s to index",path);
|
||||
free(ce);
|
||||
else if (add_index_entry(istate, ce, add_option)) {
|
||||
free(ce);
|
||||
return error("unable to add %s to index", path);
|
||||
}
|
||||
if (verbose && !was_same)
|
||||
printf("add '%s'\n", path);
|
||||
return 0;
|
||||
@ -743,12 +748,9 @@ struct cache_entry *make_cache_entry(unsigned int mode,
|
||||
ce->ce_mode = create_ce_mode(mode);
|
||||
|
||||
ret = refresh_cache_entry(ce, refresh_options);
|
||||
if (!ret) {
|
||||
if (ret != ce)
|
||||
free(ce);
|
||||
return NULL;
|
||||
} else {
|
||||
return ret;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ce_same_name(const struct cache_entry *a, const struct cache_entry *b)
|
||||
|
Loading…
Reference in New Issue
Block a user