From: Kenichi Handa Date: Fri, 9 Feb 2001 05:32:24 +0000 (+0000) Subject: (Fstring): If all arguments are less than 256, return a unibyte X-Git-Tag: emacs-pretest-21.0.98~81 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5729c92fb2999977fdc2de367def7d847f6d249e;p=emacs.git (Fstring): If all arguments are less than 256, return a unibyte string. --- diff --git a/src/charset.c b/src/charset.c index 4bad7b5ab28..dcdb279b59f 100644 --- a/src/charset.c +++ b/src/charset.c @@ -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);