diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/xdisp.c | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/xdisp.c b/src/xdisp.c index fb148ee8200..ba9e08dba49 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -4227,7 +4227,22 @@ get_next_display_element (it) | |||
| 4227 | if (SINGLE_BYTE_CHAR_P (it->c)) | 4227 | if (SINGLE_BYTE_CHAR_P (it->c)) |
| 4228 | str[0] = it->c, len = 1; | 4228 | str[0] = it->c, len = 1; |
| 4229 | else | 4229 | else |
| 4230 | len = CHAR_STRING (it->c, str); | 4230 | { |
| 4231 | len = CHAR_STRING_NO_SIGNAL (it->c, str); | ||
| 4232 | if (len < 0) | ||
| 4233 | { | ||
| 4234 | /* It's an invalid character, which | ||
| 4235 | shouldn't happen actually, but due to | ||
| 4236 | bugs it may happen. Let's print the char | ||
| 4237 | as is, there's not much meaningful we can | ||
| 4238 | do with it. */ | ||
| 4239 | str[0] = it->c; | ||
| 4240 | str[1] = it->c >> 8; | ||
| 4241 | str[2] = it->c >> 16; | ||
| 4242 | str[3] = it->c >> 24; | ||
| 4243 | len = 4; | ||
| 4244 | } | ||
| 4245 | } | ||
| 4231 | 4246 | ||
| 4232 | for (i = 0; i < len; i++) | 4247 | for (i = 0; i < len; i++) |
| 4233 | { | 4248 | { |