Browse Source

vfs: fix tempdir path building to account for trailing slash on macOS

Signed-off-by: Yury V. Zaytsev <yury@shurup.com>
Yury V. Zaytsev 6 months ago
parent
commit
a3ce493ae2
2 changed files with 8 additions and 1 deletions
  1. 5 1
      lib/vfs/interface.c
  2. 3 0
      tests/lib/vfs/tempdir.c

+ 5 - 1
lib/vfs/interface.c

@@ -775,6 +775,7 @@ mc_tmpdir (void)
     static const char *tmpdir = NULL;
     const char *sys_tmp;
     struct stat st;
+    gchar *template;
 
     /* Check if already correctly initialized */
     if (tmpdir != NULL && lstat (tmpdir, &st) == 0 && S_ISDIR (st.st_mode) &&
@@ -789,7 +790,10 @@ mc_tmpdir (void)
             sys_tmp = TMPDIR_DEFAULT;
     }
 
-    g_snprintf (buffer, sizeof (buffer), "%s/mc-XXXXXX", sys_tmp);
+    template = g_build_filename (sys_tmp, "mc-XXXXXX", (char *) NULL);
+    g_strlcpy (buffer, template, sizeof (buffer));
+    g_free (template);
+
     tmpdir = g_mkdtemp (buffer);
     if (tmpdir != NULL)
         g_setenv ("MC_TMPDIR", tmpdir, TRUE);

+ 3 - 0
tests/lib/vfs/tempdir.c

@@ -45,6 +45,9 @@
 static void
 setup (void)
 {
+    /* Ensure that tests behave consistently irrespectively of the environment */
+    g_unsetenv ("MC_TMPDIR");
+
     str_init_strings (NULL);
 
     vfs_init ();