X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=bundle.c;h=0ba5df17e15d679b03fe38af40260c118c9588fa;hb=dabc42c7134596092bf59adb83c79b09f729c290;hp=316aa7420d8bd647e304d21c6ca4a9b9cbe5548a;hpb=887ad79865d862a0a3aef4b59957d7dd95d0507d;p=git.git diff --git a/bundle.c b/bundle.c index 316aa7420..0ba5df17e 100644 --- a/bundle.c +++ b/bundle.c @@ -128,7 +128,8 @@ int verify_bundle(struct bundle_header *header, int verbose) add_object_array(e->item, e->name, &refs); } - prepare_revision_walk(&revs); + if (prepare_revision_walk(&revs)) + die("revision walk setup failed"); i = req_nr; while (i && (commit = get_revision(&revs))) @@ -317,6 +318,14 @@ int create_bundle(struct bundle_header *header, const char *path, rls.git_cmd = 1; if (start_command(&rls)) return error("Could not spawn pack-objects"); + + /* + * start_command closed bundle_fd if it was > 1 + * so set the lock fd to -1 so commit_lock_file() + * won't fail trying to close it. + */ + lock.fd = -1; + for (i = 0; i < revs.pending.nr; i++) { struct object *object = revs.pending.objects[i].item; if (object->flags & UNINTERESTING) @@ -324,9 +333,9 @@ int create_bundle(struct bundle_header *header, const char *path, write_or_die(rls.in, sha1_to_hex(object->sha1), 40); write_or_die(rls.in, "\n", 1); } + close(rls.in); if (finish_command(&rls)) return error ("pack-objects died"); - close(bundle_fd); if (!bundle_to_stdout) commit_lock_file(&lock); return 0;