]> granicus.if.org Git - neomutt/commitdiff
Fix ansi escape sequences with both reset and color parameters
authorKevin McCarthy <kevin@8t8.us>
Sun, 19 Nov 2017 03:13:08 +0000 (19:13 -0800)
committerRichard Russon <rich@flatcap.org>
Sun, 26 Nov 2017 22:37:25 +0000 (22:37 +0000)
The initial 0 "reset/normal" was setting attr = ANSI_OFF, which was
subsequently being or'ed with ANSI_COLOR.

The color resolution was then checking for the ANSI_OFF bit and
turning all coloring off, even though ANSI_COLOR was also set.

Change the color resolution to check for "attr == ANSI_OFF" instead, so
the color isn't reset unless the reset occurs last in the sequence.

(closes #3689)

pager.c

diff --git a/pager.c b/pager.c
index b07dd91daf896a79bdc1b2726dd3aee0a0090c7b..96cf4d21843005dab3d55e73bae74e056be6ace4 100644 (file)
--- a/pager.c
+++ b/pager.c
@@ -340,7 +340,7 @@ static void resolve_color(struct Line *line_info, int n, int cnt, int flags,
     {
       color ^= A_BLINK;
     }
-    else if (a->attr & ANSI_OFF)
+    else if (a->attr == ANSI_OFF)
     {
       a->attr = 0;
     }