1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

Make _inp_edited() more robust

This commit is contained in:
Dmitry Podgorny 2020-04-19 00:19:16 +03:00
parent a39e44ac1d
commit 1f0159de36

View File

@ -324,6 +324,10 @@ _inp_write(char *line, int offset)
static int
_inp_edited(const wint_t ch)
{
// Use own state to be thread-safe with possible pthreads. C standard
// guarantees that initial value of the state will be zeroed buffer.
static mbstate_t mbstate;
// backspace
if (ch == 127) {
return 1;
@ -341,7 +345,10 @@ _inp_edited(const wint_t ch)
// printable
char bytes[MB_CUR_MAX+1];
size_t utf_len = wcrtomb(bytes, ch, (mbstate_t*)NULL);
size_t utf_len = wcrtomb(bytes, ch, &mbstate);
if (utf_len == (size_t)-1) {
return 0;
}
bytes[utf_len] = '\0';
gunichar unichar = g_utf8_get_char(bytes);