1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Merge pull request #1319 from profanity-im/input

Make _inp_edited() more robust
This commit is contained in:
Michael Vetter 2020-04-19 00:07:31 +02:00 committed by GitHub
commit 95b75a2948
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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);