commit c4b854d5c7b537d5425aab4426c6dcf0b945950c
parent a03d9c0ecd4edaf004a7e57aa525860f88d86d22
Author: David Lawrence Ramsey <pooka109@gmail.com>
Date: Tue, 20 Sep 2005 04:15:33 +0000
in display_string(), really avoid a memory corruption problem by
allocating enough space for COLS characters
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3021 35c25a1d-7b9e-4130-9fde-d3aeb78583b8
Diffstat:
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -336,6 +336,8 @@ CVS code -
which can be possible if there are enough tabs and the
terminal size is sufficiently large, don't try to display it
using control_mbrep(). (DLR, found by Duncan Geoffry Doyle)
+ - Really avoid a memory corruption problem by allocating enough
+ space for COLS characters. (DLR)
edit_redraw(), edit_refresh()
- Clean up and simplify. (DLR)
edit_update()
diff --git a/src/winio.c b/src/winio.c
@@ -2328,9 +2328,8 @@ char *display_string(const char *buf, size_t start_col, size_t len, bool
assert(column <= start_col);
- /* Allocate enough space for the entire line, accounting for a
- * trailing multibyte character and/or tab. */
- alloc_len = (mb_cur_max() * (len + 1)) + tabsize;
+ /* Allocate enough space for the entire line. */
+ alloc_len = (mb_cur_max() * COLS);
converted = charalloc(alloc_len + 1);
index = 0;