diff options
-rw-r--r-- | src/calcurse.h | 1 | ||||
-rw-r--r-- | src/day.c | 2 | ||||
-rw-r--r-- | src/getstring.c | 5 | ||||
-rw-r--r-- | src/todo.c | 2 |
4 files changed, 6 insertions, 4 deletions
diff --git a/src/calcurse.h b/src/calcurse.h index 8e71a27..315f8e1 100644 --- a/src/calcurse.h +++ b/src/calcurse.h @@ -200,6 +200,7 @@ #define TOSTRING(x) STRINGIFY(x) #define __FILE_POS__ __FILE__ ":" TOSTRING(__LINE__) +#define UTF8_MAXLEN 6 #define UTF8_LENGTH(ch) ((unsigned char)ch >= 0xFC ? 6 : \ ((unsigned char)ch >= 0xF8 ? 5 : \ ((unsigned char)ch >= 0xF0 ? 4 : \ @@ -352,7 +352,7 @@ display_item (int incolor, char *msg, int recur, int note, int width, int y, { WINDOW *win; int ch_recur, ch_note; - char buf[width * 6]; + char buf[width * UTF8_MAXLEN]; int i; if (width <= 0) diff --git a/src/getstring.c b/src/getstring.c index 9dd7b8a..3b9e865 100644 --- a/src/getstring.c +++ b/src/getstring.c @@ -186,7 +186,7 @@ getstring (WINDOW *win, char *str, int l, int x, int y) struct getstr_charinfo ci[l + 1]; int ch, k; - char c[6]; + char c[UTF8_MAXLEN]; getstr_init (&st, str, ci); custom_apply_attr (win, ATTR_HIGHEST); @@ -255,7 +255,8 @@ getstring (WINDOW *win, char *str, int l, int x, int y) return (GETSTRING_ESC); break; default: /* insert one character */ - for (c[0] = ch, k = 1; k < MIN (UTF8_LENGTH (c[0]), 6); k++) + c[0] = ch; + for (k = 1; k < MIN (UTF8_LENGTH (c[0]), UTF8_MAXLEN); k++) c[k] = (unsigned char)wgetch (win); if (st.ci[st.len].offset + k < l) { @@ -374,7 +374,7 @@ display_todo_item (int incolor, char *msg, int prio, int note, int width, int y, { WINDOW *w; int ch_note; - char buf[width * 6], priostr[2]; + char buf[width * UTF8_MAXLEN], priostr[2]; int i; w = win[TOD].p; |