From: David Lawrence Ramsey Date: Tue, 20 Sep 2005 04:15:33 +0000 (+0000) Subject: in display_string(), really avoid a memory corruption problem by X-Git-Tag: v1.3.9~25 X-Git-Url: https://git.wh0rd.org/?a=commitdiff_plain;h=c4b854d5c7b537d5425aab4426c6dcf0b945950c;p=nano.git 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 --- diff --git a/ChangeLog b/ChangeLog index 982f91ba..f47a0c90 100644 --- 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 index 17ca14bf..30789484 100644 --- 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;