From 2d3d1e9324bb18c887ccf7370c7fc7e0b5a065e0 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Thu, 18 May 2006 17:28:16 +0000 Subject: [PATCH] in break_line(), fix problem where tab widths in columns are always calculated as tabsize git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3523 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 3 +++ src/text.c | 11 +++++------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index f5c3a835..51b17a35 100644 --- a/ChangeLog +++ b/ChangeLog @@ -221,6 +221,9 @@ CVS code - - Change all rcfile error messages to refer to commands instead of directives, for consistency with nanorc.5. (DLR) - text.c: + break_line() + - Fix problem where tab widths in columns are always calculated + as tabsize. (DLR, found by Alexey Toptygin) do_justify() - Remove redundant key checks. (DLR) do_spell() diff --git a/src/text.c b/src/text.c index 1c1727ec..4f26237f 100644 --- a/src/text.c +++ b/src/text.c @@ -779,14 +779,14 @@ ssize_t break_line(const char *line, ssize_t goal * found with short enough display width. */ ssize_t cur_loc = 0; /* Current index in line. */ + size_t cur_pos = 0; + /* Current column position in line. */ int line_len; assert(line != NULL); - while (*line != '\0' && goal >= 0) { - size_t pos = 0; - - line_len = parse_mbchar(line, NULL, &pos); + while (*line != '\0' && goal >= cur_pos) { + line_len = parse_mbchar(line, NULL, &cur_pos); if (is_blank_mbchar(line) #ifndef DISABLE_HELP @@ -801,12 +801,11 @@ ssize_t break_line(const char *line, ssize_t goal #endif } - goal -= pos; line += line_len; cur_loc += line_len; } - if (goal >= 0) + if (goal >= cur_pos) /* In fact, the whole line displays shorter than goal. */ return cur_loc;