]> git.wh0rd.org Git - nano.git/commitdiff
in break_line(), fix problem where tab widths in columns are always
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Thu, 18 May 2006 17:28:16 +0000 (17:28 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Thu, 18 May 2006 17:28:16 +0000 (17:28 +0000)
calculated as tabsize

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@3523 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/text.c

index f5c3a83510e32dfd73c54734150f75d6cbbf5c8d..51b17a354d64c808c16e352b65052888452915af 100644 (file)
--- 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()
index 1c1727ec8a3ab854f536facee3d6062a9a839d9b..4f26237f35b0b6b0b2bd09b4ba59c02c66cb9a3c 100644 (file)
@@ -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;