summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/calcurse.h1
-rw-r--r--src/day.c2
-rw-r--r--src/getstring.c5
-rw-r--r--src/todo.c2
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 : \
diff --git a/src/day.c b/src/day.c
index 2d0737e..7ad0b27 100644
--- a/src/day.c
+++ b/src/day.c
@@ -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)
{
diff --git a/src/todo.c b/src/todo.c
index 43d5ad5..a6b5687 100644
--- a/src/todo.c
+++ b/src/todo.c
@@ -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;