diff --git a/src/terminal/draw.c b/src/terminal/draw.c index cf72dbff..baeca420 100644 --- a/src/terminal/draw.c +++ b/src/terminal/draw.c @@ -496,6 +496,8 @@ draw_text(struct terminal *term, int x, int y, assert(text && length >= 0); if_assert_failed return; + if (x >= term->width || y >= term->height) return; + #ifdef CONFIG_UTF8 if (term->utf8) { draw_text_utf8(term, x, y, text, length, attr, color); diff --git a/src/util/box.h b/src/util/box.h index dcb57274..74f5bb4f 100644 --- a/src/util/box.h +++ b/src/util/box.h @@ -39,10 +39,10 @@ colspan_is_in_box(struct box *box, int x, int span) static inline void set_box(struct box *box, int x, int y, int width, int height) { - box->x = x; - box->y = y; - box->width = width; - box->height = height; + box->x = int_max(0, x); + box->y = int_max(0, y); + box->width = int_max(0, width); + box->height = int_max(0, height); } static inline void