aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2017-02-08 19:36:08 +0100
committerMarc André Tanner <mat@brain-dump.org>2017-02-08 19:36:08 +0100
commit11b55c1ae4f73a033aae5800d9b1627bcae04e50 (patch)
treec69580d83f20a01e4ef162d756f4190e30556ad0
parent4f61acdbf38aa37617c083d57a3142137a8355a2 (diff)
downloadvis-11b55c1ae4f73a033aae5800d9b1627bcae04e50.tar.gz
vis-11b55c1ae4f73a033aae5800d9b1627bcae04e50.tar.xz
vis: make `ga` and `g8` more robust
Fixes CID 141179
-rw-r--r--main.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/main.c b/main.c
index 4c6b1cf..d84c7da 100644
--- a/main.c
+++ b/main.c
@@ -2040,7 +2040,10 @@ static const char *unicode_info(Vis *vis, const char *keys, const Arg *arg) {
mbstate_t ps = { 0 };
Iterator it = text_iterator_get(txt, start);
for (size_t pos = start; it.pos < end; pos = it.pos) {
- text_iterator_codepoint_next(&it, NULL);
+ if (!text_iterator_codepoint_next(&it, NULL)) {
+ vis_info_show(vis, "Failed to parse code point");
+ goto err;
+ }
size_t len = it.pos - pos;
wchar_t wc = 0xFFFD;
size_t res = mbrtowc(&wc, codepoint, len, &ps);
@@ -2061,6 +2064,7 @@ static const char *unicode_info(Vis *vis, const char *keys, const Arg *arg) {
codepoint += len;
}
vis_info_show(vis, "%s", buffer_content0(&info));
+err:
free(grapheme);
buffer_release(&info);
return keys;