diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-09-19 04:47:57 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-09-19 04:47:57 +0300 |
commit | d811ba1897b723fd0146875201061e3603c16391 (patch) | |
tree | 23594d07bf59cdd03c9e979c09f720ad1fee9fb0 /builtin/merge.c | |
parent | 17cb5f85d06e82b7837a59064fd5fe61b44f9d12 (diff) | |
parent | b6ec3071774fb4eab406e76c29cbf1a5f27929a8 (diff) |
Merge branch 'rs/strbuf-leakfix'
Many leaks of strbuf have been fixed.
* rs/strbuf-leakfix: (34 commits)
wt-status: release strbuf after use in wt_longstatus_print_tracking()
wt-status: release strbuf after use in read_rebase_todolist()
vcs-svn: release strbuf after use in end_revision()
utf8: release strbuf on error return in strbuf_utf8_replace()
userdiff: release strbuf after use in userdiff_get_textconv()
transport-helper: release strbuf after use in process_connect_service()
sequencer: release strbuf after use in save_head()
shortlog: release strbuf after use in insert_one_record()
sha1_file: release strbuf on error return in index_path()
send-pack: release strbuf on error return in send_pack()
remote: release strbuf after use in set_url()
remote: release strbuf after use in migrate_file()
remote: release strbuf after use in read_remote_branches()
refs: release strbuf on error return in write_pseudoref()
notes: release strbuf after use in notes_copy_from_stdin()
merge: release strbuf after use in write_merge_heads()
merge: release strbuf after use in save_state()
mailinfo: release strbuf on error return in handle_boundary()
mailinfo: release strbuf after use in handle_from()
help: release strbuf on error return in exec_woman_emacs()
...
Diffstat (limited to 'builtin/merge.c')
-rw-r--r-- | builtin/merge.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/builtin/merge.c b/builtin/merge.c index 66b718678e..ab5ffe85e8 100644 --- a/builtin/merge.c +++ b/builtin/merge.c @@ -255,6 +255,7 @@ static int save_state(struct object_id *stash) struct child_process cp = CHILD_PROCESS_INIT; struct strbuf buffer = STRBUF_INIT; const char *argv[] = {"stash", "create", NULL}; + int rc = -1; cp.argv = argv; cp.out = -1; @@ -268,11 +269,14 @@ static int save_state(struct object_id *stash) if (finish_command(&cp) || len < 0) die(_("stash failed")); else if (!len) /* no changes */ - return -1; + goto out; strbuf_setlen(&buffer, buffer.len-1); if (get_oid(buffer.buf, stash)) die(_("not a valid object: %s"), buffer.buf); - return 0; + rc = 0; +out: + strbuf_release(&buffer); + return rc; } static void read_empty(unsigned const char *sha1, int verbose) @@ -942,6 +946,7 @@ static void write_merge_heads(struct commit_list *remoteheads) if (fast_forward == FF_NO) strbuf_addstr(&buf, "no-ff"); write_file_buf(git_path_merge_mode(), buf.buf, buf.len); + strbuf_release(&buf); } static void write_merge_state(struct commit_list *remoteheads) |