blame.c: Properly initialize strbuf after calling textconv_object(), again
[gitweb.git] / builtin / blame.c
index e39d9865e2d3f8db10ef2f43b9a2d07ad0b61df9..0aac73665b79df94cf6269f3520fa147b33b6b9b 100644 (file)
@@ -2077,6 +2077,7 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
        if (!contents_from || strcmp("-", contents_from)) {
                struct stat st;
                const char *read_from;
+               char *buf_ptr;
                unsigned long buf_len;
 
                if (contents_from) {
@@ -2094,10 +2095,8 @@ static struct commit *fake_working_tree_commit(struct diff_options *opt,
                switch (st.st_mode & S_IFMT) {
                case S_IFREG:
                        if (DIFF_OPT_TST(opt, ALLOW_TEXTCONV) &&
-                           textconv_object(read_from, mode, null_sha1, &buf.buf, &buf_len)) {
-                               buf.alloc = buf_len;
-                               buf.len = buf_len;
-                       }
+                           textconv_object(read_from, mode, null_sha1, &buf_ptr, &buf_len))
+                               strbuf_attach(&buf, buf_ptr, buf_len, buf_len + 1);
                        else if (strbuf_read_file(&buf, read_from, st.st_size) != st.st_size)
                                die_errno("cannot open or read '%s'", read_from);
                        break;