]> git.eshelyaron.com Git - emacs.git/commitdiff
* fileio.c (Fsubstitute_in_file_name): Copy string data properly.
authorChong Yidong <cyd@stupidchicken.com>
Tue, 7 Jul 2009 22:26:41 +0000 (22:26 +0000)
committerChong Yidong <cyd@stupidchicken.com>
Tue, 7 Jul 2009 22:26:41 +0000 (22:26 +0000)
src/ChangeLog
src/fileio.c

index 12015414fe7da5776322928b1c13523ba7c6a65d..ab1501af211c4fb59ef6d01a8f460cb6fde91c29 100644 (file)
@@ -1,3 +1,7 @@
+2009-07-07  Chong Yidong  <cyd@stupidchicken.com>
+
+       * fileio.c (Fsubstitute_in_file_name): Copy string data properly.
+
 2009-07-07  Kenichi Handa  <handa@m17n.org>
 
        * .gdbinit (xcharset): Fix the treating of $arg0.
index ed5c09bc8403c5f54c65727eed3c81c9be00f0f6..8529455071fb74275ddb1690f256af0fa502539c 100644 (file)
@@ -1641,11 +1641,12 @@ those `/' is discarded.  */)
   if (!NILP (handler))
     return call2 (handler, Qsubstitute_in_file_name, filename);
 
-  nm = SDATA (filename);
   /* Always work on a copy of the string, in case GC happens during
      decode of environment variables, causing the original Lisp_String
      data to be relocated.  */
-  nm = strcpy (alloca (strlen (nm) + 1), nm);
+  nm = (unsigned char *) alloca (SBYTES (filename) + 1);
+  bcopy (SDATA (filename), nm, SBYTES (filename) + 1);
+
 #ifdef DOS_NT
   CORRECT_DIR_SEPS (nm);
   substituted = (strcmp (nm, SDATA (filename)) != 0);