]> git.eshelyaron.com Git - emacs.git/commitdiff
(Fstring): If all arguments are less than 256, return a unibyte
authorKenichi Handa <handa@m17n.org>
Fri, 9 Feb 2001 05:32:24 +0000 (05:32 +0000)
committerKenichi Handa <handa@m17n.org>
Fri, 9 Feb 2001 05:32:24 +0000 (05:32 +0000)
string.

src/charset.c

index 4bad7b5ab283b22dae32a2bdb95c94da8b200a7c..dcdb279b59f0f630d7a2355ea15d93e68bfcda99 100644 (file)
@@ -1619,12 +1619,22 @@ DEFUN ("string", Fstring, Sstring, 1, MANY, 0,
   unsigned char *buf = (unsigned char *) alloca (MAX_MULTIBYTE_LENGTH * n);
   unsigned char *p = buf;
   int c;
+  int multibyte = 0;
 
   for (i = 0; i < n; i++)
     {
       CHECK_NUMBER (args[i], 0);
+      if (!multibyte && !SINGLE_BYTE_CHAR_P (XFASTINT (args[i])))
+       multibyte = 1;
+    }
+
+  for (i = 0; i < n; i++)
+    {
       c = XINT (args[i]);
-      p += CHAR_STRING (c, p);
+      if (multibyte)
+       p += CHAR_STRING (c, p);
+      else
+       *p++ += c;
     }
 
   return make_string_from_bytes (buf, n, p - buf);