From 9433096a73d6af7cac7b05b087a740b2d070f463 Mon Sep 17 00:00:00 2001 From: Albert Cervin Date: Thu, 25 Jan 2024 10:25:21 +0100 Subject: Fix save empty buffer crash It was assuming it could access the "last line". --- src/dged/buffer.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/dged/buffer.c b/src/dged/buffer.c index 8b1f69c..78b89c8 100644 --- a/src/dged/buffer.c +++ b/src/dged/buffer.c @@ -366,10 +366,13 @@ void buffer_to_file(struct buffer *buffer) { } uint32_t nlines = text_num_lines(buffer->text); - struct text_chunk lastline = text_get_line(buffer->text, nlines - 1); - uint32_t nlines_to_write = lastline.nbytes == 0 ? nlines - 1 : nlines; + uint32_t nlines_to_write = nlines; + if (nlines > 0) { + struct text_chunk lastline = text_get_line(buffer->text, nlines - 1); + nlines_to_write = lastline.nbytes == 0 ? nlines - 1 : nlines; + text_for_each_line(buffer->text, 0, nlines_to_write, write_line, file); + } - text_for_each_line(buffer->text, 0, nlines_to_write, write_line, file); minibuffer_echo_timeout(4, "wrote %d lines to %s", nlines_to_write, buffer->filename); fclose(file); -- cgit v1.2.3