]> granicus.if.org Git - neomutt/commitdiff
Fix soft-padding available columns computation.
authorKevin McCarthy <kevin@8t8.us>
Thu, 14 Apr 2016 19:35:57 +0000 (12:35 -0700)
committerKevin McCarthy <kevin@8t8.us>
Thu, 14 Apr 2016 19:35:57 +0000 (12:35 -0700)
If arrow_cursor is set, it's possible that COLS < offset.  Compute
avail_cols, floored at 0, and use that instead.

muttlib.c

index fb485c7be1e8d6208bc842555d59bcab904cf1a3..9096590ec5257fddcb491fc26809eb76edeaa78a 100644 (file)
--- a/muttlib.c
+++ b/muttlib.c
@@ -1321,16 +1321,17 @@ void mutt_FormatString (char *dest,             /* output buffer */
          else if (soft && pad < 0)
          {
            int offset = ((flags & M_FORMAT_ARROWCURSOR) && option (OPTARROWCURSOR)) ? 3 : 0;
+            int avail_cols = (COLS > offset) ? (COLS - offset) : 0;
            /* \0-terminate dest for length computation in mutt_wstr_trunc() */
            *wptr = 0;
            /* make sure right part is at most as wide as display */
-           len = mutt_wstr_trunc (buf, destlen, COLS-offset, &wid);
+           len = mutt_wstr_trunc (buf, destlen, avail_cols, &wid);
            /* truncate left so that right part fits completely in */
-           wlen = mutt_wstr_trunc (dest, destlen - len, COLS - wid - offset, &col);
+           wlen = mutt_wstr_trunc (dest, destlen - len, avail_cols - wid, &col);
            wptr = dest + wlen;
             /* Multi-column characters may be truncated in the middle.
              * Add spacing so the right hand side lines up. */
-            while ((col + wid < COLS - offset) && (wlen + len < destlen))
+            while ((col + wid < avail_cols) && (wlen + len < destlen))
             {
               *wptr++ = ' ';
               wlen++;