Fix error handling in termo_strfkey()
If in any case snprintf() returned a negative value, we would mishandle it.
This commit is contained in:
parent
2a351b150d
commit
ef29b7587d
|
@ -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
|
||||||
|
|
4
termo.c
4
termo.c
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue