diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2017-02-08 19:36:08 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2017-02-08 19:36:08 +0100 |
| commit | 11b55c1ae4f73a033aae5800d9b1627bcae04e50 (patch) | |
| tree | c69580d83f20a01e4ef162d756f4190e30556ad0 | |
| parent | 4f61acdbf38aa37617c083d57a3142137a8355a2 (diff) | |
| download | vis-11b55c1ae4f73a033aae5800d9b1627bcae04e50.tar.gz vis-11b55c1ae4f73a033aae5800d9b1627bcae04e50.tar.xz | |
vis: make `ga` and `g8` more robust
Fixes CID 141179
| -rw-r--r-- | main.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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; |
