Fix error handling in termo_strfkey()

If in any case snprintf() returned a negative value,
we would mishandle it.
This commit is contained in:
Přemysl Eric Janouch 2015-10-30 23:58:29 +01:00
parent 2a351b150d
commit ef29b7587d
2 changed files with 3 additions and 2 deletions

View File

@ -5,6 +5,7 @@ termo
input. ncurses does a really terrible job at that, mainly wrt. mouse support input. ncurses does a really terrible job at that, mainly wrt. mouse support
which seems to be utterly broken. If you can drag things in a terminal which seems to be utterly broken. If you can drag things in a terminal
application, such as in VIM, I can assure you it's not using ncurses for that. application, such as in VIM, I can assure you it's not using ncurses for that.
(At least not with ncurses older than 6.0.)
Since terminal I/O is really complicated and full of special cases, this project Since terminal I/O is really complicated and full of special cases, this project
doesn't aspire to also replace the output part of ncurses, but is rather doesn't aspire to also replace the output part of ncurses, but is rather

View File

@ -1444,7 +1444,7 @@ termo_strfkey (termo_t *tk, char *buffer, size_t len,
termo_key_t *key, termo_format_t format) termo_key_t *key, termo_format_t format)
{ {
size_t pos = 0; size_t pos = 0;
size_t l = 0; int l = 0;
struct modnames *mods = &modnames[ struct modnames *mods = &modnames[
!!(format & TERMO_FORMAT_LONGMOD) + !!(format & TERMO_FORMAT_LONGMOD) +
@ -1477,7 +1477,7 @@ termo_strfkey (termo_t *tk, char *buffer, size_t len,
{ {
l = snprintf (buffer + pos, len - pos, l = snprintf (buffer + pos, len - pos,
wrapbracket ? "<^%c>" : "^%c", (char) codepoint); wrapbracket ? "<^%c>" : "^%c", (char) codepoint);
if(l <= 0) if (l <= 0)
return pos; return pos;
pos += l; pos += l;
return pos; return pos;