* coding.c (make_subsidiaries): Don't assume string length fits in int.
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 19 Jun 2011 18:44:09 +0000 (11:44 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 19 Jun 2011 18:44:09 +0000 (11:44 -0700)
src/ChangeLog
src/coding.c

index bcf40a4..99d9cad 100644 (file)
@@ -1,5 +1,7 @@
 2011-06-19  Paul Eggert  <eggert@cs.ucla.edu>
 
+       * coding.c (make_subsidiaries): Don't assume string length fits in int.
+
        * callproc.c (child_setup): Rewrite to avoid two strlen calls.
 
        * process.c (Fformat_network_address): Use EMACS_INT, not EMACS_UINT.
index 04985ab..9939774 100644 (file)
@@ -9442,7 +9442,7 @@ static Lisp_Object
 make_subsidiaries (Lisp_Object base)
 {
   Lisp_Object subsidiaries;
-  int base_name_len = SBYTES (SYMBOL_NAME (base));
+  ptrdiff_t base_name_len = SBYTES (SYMBOL_NAME (base));
   char *buf = (char *) alloca (base_name_len + 6);
   int i;
 
@@ -9450,7 +9450,7 @@ make_subsidiaries (Lisp_Object base)
   subsidiaries = Fmake_vector (make_number (3), Qnil);
   for (i = 0; i < 3; i++)
     {
-      memcpy (buf + base_name_len, suffixes[i], strlen (suffixes[i]) + 1);
+      strcpy (buf + base_name_len, suffixes[i]);
       ASET (subsidiaries, i, intern (buf));
     }
   return subsidiaries;