aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/charset.c12
1 files changed, 11 insertions, 1 deletions
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,
1619 unsigned char *buf = (unsigned char *) alloca (MAX_MULTIBYTE_LENGTH * n); 1619 unsigned char *buf = (unsigned char *) alloca (MAX_MULTIBYTE_LENGTH * n);
1620 unsigned char *p = buf; 1620 unsigned char *p = buf;
1621 int c; 1621 int c;
1622 int multibyte = 0;
1622 1623
1623 for (i = 0; i < n; i++) 1624 for (i = 0; i < n; i++)
1624 { 1625 {
1625 CHECK_NUMBER (args[i], 0); 1626 CHECK_NUMBER (args[i], 0);
1627 if (!multibyte && !SINGLE_BYTE_CHAR_P (XFASTINT (args[i])))
1628 multibyte = 1;
1629 }
1630
1631 for (i = 0; i < n; i++)
1632 {
1626 c = XINT (args[i]); 1633 c = XINT (args[i]);
1627 p += CHAR_STRING (c, p); 1634 if (multibyte)
1635 p += CHAR_STRING (c, p);
1636 else
1637 *p++ += c;
1628 } 1638 }
1629 1639
1630 return make_string_from_bytes (buf, n, p - buf); 1640 return make_string_from_bytes (buf, n, p - buf);