summaryrefslogtreecommitdiff
path: root/send-pack.c
diff options
context:
space:
mode:
Diffstat (limited to 'send-pack.c')
-rw-r--r--send-pack.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/send-pack.c b/send-pack.c
index 2112d3b27a..19025a7aca 100644
--- a/send-pack.c
+++ b/send-pack.c
@@ -37,14 +37,14 @@ int option_parse_push_signed(const struct option *opt,
die("bad %s argument: %s", opt->long_name, arg);
}
-static void feed_object(const unsigned char *sha1, FILE *fh, int negative)
+static void feed_object(const struct object_id *oid, FILE *fh, int negative)
{
- if (negative && !has_sha1_file(sha1))
+ if (negative && !has_sha1_file(oid->hash))
return;
if (negative)
putc('^', fh);
- fputs(sha1_to_hex(sha1), fh);
+ fputs(oid_to_hex(oid), fh);
putc('\n', fh);
}
@@ -89,13 +89,13 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *extra, struc
*/
po_in = xfdopen(po.in, "w");
for (i = 0; i < extra->nr; i++)
- feed_object(extra->oid[i].hash, po_in, 1);
+ feed_object(&extra->oid[i], po_in, 1);
while (refs) {
if (!is_null_oid(&refs->old_oid))
- feed_object(refs->old_oid.hash, po_in, 1);
+ feed_object(&refs->old_oid, po_in, 1);
if (!is_null_oid(&refs->new_oid))
- feed_object(refs->new_oid.hash, po_in, 0);
+ feed_object(&refs->new_oid, po_in, 0);
refs = refs->next;
}
@@ -137,6 +137,8 @@ static int pack_objects(int fd, struct ref *refs, struct oid_array *extra, struc
static int receive_unpack_status(int in)
{
const char *line = packet_read_line(in, NULL);
+ if (!line)
+ return error(_("unexpected flush packet while reading remote unpack status"));
if (!skip_prefix(line, "unpack ", &line))
return error(_("unable to parse remote unpack status: %s"), line);
if (strcmp(line, "ok"))