diff options
| author | Junio C Hamano <gitster@pobox.com> | 2016-04-13 14:12:34 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2016-04-13 14:12:34 -0700 |
| commit | fc452aeac2d5d357de2904aebee8d3867f92705c (patch) | |
| tree | eddb9131bf8f3abba7be345e77b61624b8106ea8 /bundle.c | |
| parent | Merge branch 'sk/send-pack-all-fix' (diff) | |
| parent | credential-cache, send_request: close fd when done (diff) | |
| download | git-fc452aeac2d5d357de2904aebee8d3867f92705c.tar.gz git-fc452aeac2d5d357de2904aebee8d3867f92705c.zip | |
Merge branch 'sb/misc-cleanups'
Assorted minor clean-ups.
* sb/misc-cleanups:
credential-cache, send_request: close fd when done
bundle: don't leak an fd in case of early return
abbrev_sha1_in_line: don't leak memory
notes: don't leak memory in git_config_get_notes_strategy
Diffstat (limited to 'bundle.c')
| -rw-r--r-- | bundle.c | 23 |
1 files changed, 17 insertions, 6 deletions
@@ -435,12 +435,14 @@ int create_bundle(struct bundle_header *header, const char *path, /* write prerequisites */ if (compute_and_write_prerequisites(bundle_fd, &revs, argc, argv)) - return -1; + goto err; argc = setup_revisions(argc, argv, &revs, NULL); - if (argc > 1) - return error(_("unrecognized argument: %s"), argv[1]); + if (argc > 1) { + error(_("unrecognized argument: %s"), argv[1]); + goto err; + } object_array_remove_duplicates(&revs.pending); @@ -448,17 +450,26 @@ int create_bundle(struct bundle_header *header, const char *path, if (!ref_count) die(_("Refusing to create empty bundle.")); else if (ref_count < 0) - return -1; + goto err; /* write pack */ - if (write_pack_data(bundle_fd, &revs)) - return -1; + if (write_pack_data(bundle_fd, &revs)) { + bundle_fd = -1; /* already closed by the above call */ + goto err; + } if (!bundle_to_stdout) { if (commit_lock_file(&lock)) die_errno(_("cannot create '%s'"), path); } return 0; +err: + if (!bundle_to_stdout) { + if (0 <= bundle_fd) + close(bundle_fd); + rollback_lock_file(&lock); + } + return -1; } int unbundle(struct bundle_header *header, int bundle_fd, int flags) |
