diff options
| author | Junio C Hamano <gitster@pobox.com> | 2016-05-18 14:40:15 -0700 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2016-05-18 14:40:15 -0700 |
| commit | 66106691a1b71e445fe5e4d6b8b043dffc7dfe4c (patch) | |
| tree | 580fee1afc5f1b54fa2525fe461630a0f6b10c1b /bundle.c | |
| parent | 989cbd455619e1e7b6156366ee7fd5376af683b6 (diff) | |
| parent | 99dab16863c2eca584a84bdde748b9c113717603 (diff) | |
| download | git-66106691a1b71e445fe5e4d6b8b043dffc7dfe4c.tar.gz | |
Merge branch 'sb/misc-cleanups' into HEAD
* sb/misc-cleanups:
submodule-config: don't shadow `cache`
config.c: drop local variable
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) |
