]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Don't assume that mkstemp leaves template unmodified on error
authorJoel Rosdahl <joel@rosdahl.net>
Sun, 6 Dec 2015 19:30:39 +0000 (20:30 +0100)
committerJoel Rosdahl <joel@rosdahl.net>
Sun, 6 Dec 2015 19:32:43 +0000 (20:32 +0100)
This fixes a problem seen on QNX.

util.c

diff --git a/util.c b/util.c
index 739e3aff15a71634ed3f77ec4f5f2f7ec40e432f..a2ba7151d8ddb3cce763b40741a4883b0853a799 100644 (file)
--- a/util.c
+++ b/util.c
@@ -1180,15 +1180,16 @@ create_tmp_fd(char **fname)
        char *template = format("%s.%s", *fname, tmp_string());
        int fd = mkstemp(template);
        if (fd == -1 && errno == ENOENT) {
-               if (create_parent_dirs(template) != 0) {
+               if (create_parent_dirs(*fname) != 0) {
                        fatal("Failed to create directory %s: %s",
-                             dirname(template), strerror(errno));
+                             dirname(*fname), strerror(errno));
                }
                reformat(&template, "%s.%s", *fname, tmp_string());
                fd = mkstemp(template);
        }
        if (fd == -1) {
-               fatal("Failed to create file %s: %s", template, strerror(errno));
+               fatal("Failed to create temporary file for %s: %s",
+                     *fname, strerror(errno));
        }
 
 #ifndef _WIN32