diff options
| author | Kenichi Handa | 2001-02-09 05:32:24 +0000 |
|---|---|---|
| committer | Kenichi Handa | 2001-02-09 05:32:24 +0000 |
| commit | 5729c92fb2999977fdc2de367def7d847f6d249e (patch) | |
| tree | 5e3ab8a1668800253a392bbc2a76b0ad7af031da /src | |
| parent | e47a1c3370c4537ff4b9970d97d7076d912ccb18 (diff) | |
| download | emacs-5729c92fb2999977fdc2de367def7d847f6d249e.tar.gz emacs-5729c92fb2999977fdc2de367def7d847f6d249e.zip | |
(Fstring): If all arguments are less than 256, return a unibyte
string.
Diffstat (limited to 'src')
| -rw-r--r-- | src/charset.c | 12 |
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); |