Signed-off-by: Sun He <sunheehnus@xxxxxxxxx> --- bulk-checkin.c | 10 +++++++++- 1 files changed, 9 insertions(+), 1 deletions(-) diff --git a/bulk-checkin.c b/bulk-checkin.c index 118c625..8c47d71 100644 --- a/bulk-checkin.c +++ b/bulk-checkin.c @@ -23,7 +23,8 @@ static struct bulk_checkin_state { static void finish_bulk_checkin(struct bulk_checkin_state *state) { unsigned char sha1[20]; - char packname[PATH_MAX]; + char *packname; + struct strbuf sb; int i; if (!state->f) @@ -43,6 +44,10 @@ static void finish_bulk_checkin(struct bulk_checkin_state *state) close(fd); } + /* 64-1 is more than the sum of len(sha1_to_hex(sha1)) and len(".pack") */ + strbuf_init(&sb,strlen(get_object_directory())+64); + packname = sb.buf; + sprintf(packname, "%s/pack/pack-", get_object_directory()); finish_tmp_packfile(packname, state->pack_tmp_name, state->written, state->nr_written, @@ -54,6 +59,9 @@ clear_exit: free(state->written); memset(state, 0, sizeof(*state)); + /* release sb space */ + strbuf_release(&sb); + /* Make objects we just wrote available to ourselves */ reprepare_packed_git(); } -- 1.7.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html