diff options
author | Alexander Færøy <ahf@0x90.dk> | 2014-06-18 22:53:01 +0200 |
---|---|---|
committer | Alexander Færøy <ahf@0x90.dk> | 2014-06-18 22:53:01 +0200 |
commit | 8c08eef87a6642b8cf7b7a23a0bc15cd3c896033 (patch) | |
tree | 63fe9cd019e5673d24c98de93e1a4890b35ecb80 /src/fe-text | |
parent | 3212ef2bdb7011bd0c5a62ff2eced5a1d9e19a46 (diff) | |
parent | fc4a4d24718f92542e4c606d3f3ff2cf81e8f5e3 (diff) | |
download | irssi-8c08eef87a6642b8cf7b7a23a0bc15cd3c896033.zip |
Merge pull request #12 from ailin-nemui/no-split-utf8
no split utf8 from the bug tracker
Diffstat (limited to 'src/fe-text')
-rw-r--r-- | src/fe-text/textbuffer.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/fe-text/textbuffer.c b/src/fe-text/textbuffer.c index 0ba7d16e..69f5969c 100644 --- a/src/fe-text/textbuffer.c +++ b/src/fe-text/textbuffer.c @@ -23,6 +23,7 @@ #include "module.h" #include "misc.h" #include "formats.h" +#include "utf8.h" #include "textbuffer.h" @@ -154,6 +155,17 @@ static void text_chunk_append(TEXT_BUFFER_REC *buffer, chunk = buffer->cur_text; while (chunk->pos + len >= TEXT_CHUNK_USABLE_SIZE) { left = TEXT_CHUNK_USABLE_SIZE - chunk->pos; + + /* don't split utf-8 character. (assume we can split non-utf8 anywhere.) */ + if (left < len && !is_utf8_leading(data[left])) { + int i; + for (i = 1; i < 4 && left >= i; i++) + if (is_utf8_leading(data[left - i])) { + left -= i; + break; + } + } + if (left > 0 && data[left-1] == 0) left--; /* don't split the commands */ |