diff options
Diffstat (limited to 'src/mktemp.c')
-rw-r--r-- | src/mktemp.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mktemp.c b/src/mktemp.c index 8a09231f9..d745e6069 100644 --- a/src/mktemp.c +++ b/src/mktemp.c @@ -242,20 +242,24 @@ main (int argc, char **argv) quote (template)); } - dest_name = file_name_concat (dest_dir, template, NULL); + template = file_name_concat (dest_dir, template, NULL); } else { - dest_name = xstrdup (template); + template = xstrdup (template); } + /* Make a copy to be used in case of diagnostic, since failing + mkstemp may leave the buffer in an undefined state. */ + dest_name = xstrdup (template); + if (create_directory) { int err = mkdtemp_len (dest_name, x_count, dry_run); if (err != 0) { error (0, errno, _("failed to create directory via template %s"), - quote (dest_name)); + quote (template)); status = EXIT_FAILURE; } } @@ -265,7 +269,7 @@ main (int argc, char **argv) if (fd < 0 || (!dry_run && close (fd) != 0)) { error (0, errno, _("failed to create file via template %s"), - quote (dest_name)); + quote (template)); status = EXIT_FAILURE; } } |