commit.c: Remove backward goto in read_craft_line()

Bad graft data is noticed in several places in read_graft_line(), and in
each case we go back to the first site of detection.  It in general is a
better style to have an exception handling out of line from the main
codepath and make error codepath jump forward.

Signed-off-by: Ralf Thielow <ralf.thielow@googlemail.com>
Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Ralf Thielow 2010-12-01 20:15:59 +01:00 committed by Junio C Hamano
parent 208247adb9
commit df5d43be1f

View File

@ -137,12 +137,8 @@ struct commit_graft *read_graft_line(char *buf, int len)
buf[--len] = '\0'; buf[--len] = '\0';
if (buf[0] == '#' || buf[0] == '\0') if (buf[0] == '#' || buf[0] == '\0')
return NULL; return NULL;
if ((len + 1) % 41) { if ((len + 1) % 41)
bad_graft_data: goto bad_graft_data;
error("bad graft data: %s", buf);
free(graft);
return NULL;
}
i = (len + 1) / 41 - 1; i = (len + 1) / 41 - 1;
graft = xmalloc(sizeof(*graft) + 20 * i); graft = xmalloc(sizeof(*graft) + 20 * i);
graft->nr_parent = i; graft->nr_parent = i;
@ -155,6 +151,11 @@ struct commit_graft *read_graft_line(char *buf, int len)
goto bad_graft_data; goto bad_graft_data;
} }
return graft; return graft;
bad_graft_data:
error("bad graft data: %s", buf);
free(graft);
return NULL;
} }
static int read_graft_file(const char *graft_file) static int read_graft_file(const char *graft_file)