diff --git a/src/console_cell.c b/src/console_cell.c index 2e13cd9..1562542 100644 --- a/src/console_cell.c +++ b/src/console_cell.c @@ -267,8 +267,9 @@ void kmscon_buffer_unref(struct kmscon_buffer *buf) static void link_to_scrollback(struct kmscon_buffer *buf, struct line *line) { struct line *tmp; + int ret; - if (!buf || !line) + if (!buf) return; if (buf->sb_max == 0) { @@ -276,6 +277,14 @@ static void link_to_scrollback(struct kmscon_buffer *buf, struct line *line) return; } + if (!line) { + ret = new_line(&line); + if (ret) { + log_warn("console: cannot allocate line (%d); dropping scrollback-buffer line\n", ret); + return; + } + } + if (buf->sb_count >= buf->sb_max) { tmp = buf->sb_first; buf->sb_first = tmp->next;