diff --git a/src/fe-gtk/xtext.c b/src/fe-gtk/xtext.c index 6692b360..1e65fb6b 100644 --- a/src/fe-gtk/xtext.c +++ b/src/fe-gtk/xtext.c @@ -4649,8 +4649,8 @@ gtk_xtext_append_indent (xtext_buffer *buf, if (right_len == -1) right_len = strlen (right_text); - if (right_len >= sizeof (buf->xtext->scratch_buffer)) - right_len = sizeof (buf->xtext->scratch_buffer) - 1; + if (left_len + right_len + 2 >= sizeof (buf->xtext->scratch_buffer)) + right_len = sizeof (buf->xtext->scratch_buffer) - left_len - 2; if (right_text[right_len-1] == '\n') right_len--; @@ -4670,6 +4670,9 @@ gtk_xtext_append_indent (xtext_buffer *buf, ent->str_len = left_len + 1 + right_len; ent->indent = (buf->indent - left_width) - buf->xtext->space_width; + /* This is copied into the scratch buffer later, double check math */ + g_assert (ent->str_len < sizeof (buf->xtext->scratch_buffer)); + if (buf->time_stamp) space = buf->xtext->stamp_width; else