diff options
| author | czarkoff@gmail.com <czarkoff@gmail.com> | 2014-10-28 12:55:28 +0100 |
|---|---|---|
| committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2014-11-03 22:52:58 +0100 |
| commit | 11625c7166b7e4dad414606227acec2de1c36464 (patch) | |
| tree | 7322869b5d1e0b33a480ce2e34973198b05ccc70 /st.c | |
| parent | Avoid failing when embedding with a Window id of 0 (diff) | |
| download | st-11625c7166b7e4dad414606227acec2de1c36464.tar.gz st-11625c7166b7e4dad414606227acec2de1c36464.zip | |
Replace character with U+FFFD if wcwidth() is -1
Helpful when new Unicode codepoints are not recognized by libc.
Diffstat (limited to 'st.c')
| -rw-r--r-- | st.c | 5 |
1 files changed, 4 insertions, 1 deletions
| @@ -2576,7 +2576,10 @@ tputc(char *c, int len) { | |||
| 2576 | unicodep = ascii = *c; | 2576 | unicodep = ascii = *c; |
| 2577 | } else { | 2577 | } else { |
| 2578 | utf8decode(c, &unicodep, UTF_SIZ); | 2578 | utf8decode(c, &unicodep, UTF_SIZ); |
| 2579 | width = wcwidth(unicodep); | 2579 | if ((width = wcwidth(unicodep)) == -1) { |
| 2580 | c = "\357\277\275"; /* UTF_INVALID */ | ||
| 2581 | width = 1; | ||
| 2582 | } | ||
| 2580 | control = ISCONTROLC1(unicodep); | 2583 | control = ISCONTROLC1(unicodep); |
| 2581 | ascii = unicodep; | 2584 | ascii = unicodep; |
| 2582 | } | 2585 | } |
