(Fexpand_file_name): Copy argument `name' into local storage on all platforms,
authorEli Zaretskii <eliz@gnu.org>
Fri, 29 Aug 2008 10:08:26 +0000 (10:08 +0000)
committerEli Zaretskii <eliz@gnu.org>
Fri, 29 Aug 2008 10:08:26 +0000 (10:08 +0000)
not just on DOS_NT.

src/ChangeLog
src/fileio.c

index 3faea82..9bab360 100644 (file)
@@ -1,3 +1,8 @@
+2008-08-29  Eli Zaretskii  <eliz@gnu.org>
+
+       * fileio.c (Fexpand_file_name): Copy argument `name' into local
+       storage on all platforms, not just on DOS_NT.
+
 2008-08-29  YAMAMOTO Mitsuharu  <mituharu@math.s.chiba-u.ac.jp>
 
        * mac.c (mac_system_script_code): Use EMACS_INT for DEFVAR_INT variable.
index 81836bd..d925543 100644 (file)
@@ -1149,11 +1149,10 @@ See also the function `substitute-in-file-name'.  */)
   nm = SDATA (name);
   multibyte = STRING_MULTIBYTE (name);
 
-#ifdef DOS_NT
-  /* We will force directory separators to be either all \ or /, so make
-     a local copy to modify, even if there ends up being no change. */
+  /* Make a local copy of nm[] to protect it from GC in DECODE_FILE below. */
   nm = strcpy (alloca (strlen (nm) + 1), nm);
 
+#ifdef DOS_NT
   /* Note if special escape prefix is present, but remove for now.  */
   if (nm[0] == '/' && nm[1] == ':')
     {
@@ -1340,7 +1339,7 @@ See also the function `substitute-in-file-name'.  */)
            }
          return name;
 #else /* not DOS_NT */
-         if (nm == SDATA (name))
+         if (strcmp (nm, SDATA (name)) == 0)
            return name;
          return make_specified_string (nm, -1, strlen (nm), multibyte);
 #endif /* not DOS_NT */