blame.c: Properly initialize strbuf after calling textconv_object(), again

2564aa4 started to initialize buf.alloc, but that should actually be one more byte than the string length due to the trailing \0. Also, do not modify buf.alloc out of the strbuf code. Use the existing strbuf_attach instead. Signed-off-by: Sebastian Schuberth <sschuberth@gmail.com> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sebastian Schuberth committed Nov 7, 2011 at 18:33 UTC 8518088fe803131d11eade2b15796f26ae207191
1 file changed +3 -4
builtin/blame.c
+3 -4
@@ -2077,6 +2077,7 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
2077 if (!contents_from || strcmp("-", contents_from)) {
2078 struct stat st;
2079 const char *read_from;
2080 + char *buf_ptr;
2081 unsigned long buf_len;
2082
2083 if (contents_from) {
@@ -2094,10 +2095,8 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
2095 switch (st.st_mode & S_IFMT) {
2096 case S_IFREG:
2097 if (DIFF_OPT_TST(opt, ALLOW_TEXTCONV) &&
2097 - textconv_object(read_from, mode, null_sha1, &buf.buf, &buf_len)) {
2098 - buf.alloc = buf_len;
2099 - buf.len = buf_len;
2100 - }
2098 + textconv_object(read_from, mode, null_sha1, &buf_ptr, &buf_len))
2099 + strbuf_attach(&buf, buf_ptr, buf_len, buf_len + 1);
2100 else if (strbuf_read_file(&buf, read_from, st.st_size) != st.st_size)
2101 die_errno("cannot open or read '%s'", read_from);
2102 break;