tempfile: release deactivated strbufs instead of resetting
[gitweb.git] / diff.c
diff --git a/diff.c b/diff.c
index 3d3e553a98bc4fd83d2f79515056c4116086b5df..20f68ec3892cb51d87fdae629361e6cc1f80e948 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -3738,9 +3738,9 @@ static void prep_temp_blob(const char *path, struct diff_tempfile *temp,
                blob = buf.buf;
                size = buf.len;
        }
-       if (write_in_full(fd, blob, size) != size)
+       if (write_in_full(fd, blob, size) != size ||
+           close_tempfile_gently(&temp->tempfile))
                die_errno("unable to write temp-file");
-       close_tempfile(&temp->tempfile);
        temp->name = get_tempfile_path(&temp->tempfile);
        oid_to_hex_r(temp->hex, oid);
        xsnprintf(temp->mode, sizeof(temp->mode), "%06o", mode);