From e189569db29ca7531fa8e53b7489d1830cf12b6f Mon Sep 17 00:00:00 2001 From: Jim Warner Date: Sun, 1 Oct 2017 17:59:59 -0500 Subject: [PATCH] top: plug a small potential hole in multi-byte support Unlike the insp_mkrow_raw function the insp_mkrow_utf8 routine is not equipped to print non-ctl, non-printing characters like '<7f>'. However, technically that very value currently slips through the cracks. So with this patch top will now print a space in the unlikely event a character with the value of 127 is ever encountered. Signed-off-by: Jim Warner --- top/top.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/top/top.c b/top/top.c index 14794e5e..394b8a94 100644 --- a/top/top.c +++ b/top/top.c @@ -2700,6 +2700,7 @@ static void insp_mkrow_utf8 (int col, int row) { #define mkCTL { if ((to += 2) <= Screen_cols) \ PUTT("%s^%c%s", Curwin->capclr_msg, uch + '@', Caps_off); } #endif + #define mkNUL { buf1[0] = ' '; doPUT(buf1) } #define doPUT(buf) if (++to <= Screen_cols) putp(buf); static char buf1[2], buf2[3], buf3[4], buf4[5]; char tline[BIGBUFSIZ]; @@ -2719,6 +2720,7 @@ static void insp_mkrow_utf8 (int col, int row) { case 1: if (uch == '\n') break; else if (uch < 32) mkCTL + else if (uch == 127) mkNUL else { buf1[0] = uch; doPUT(buf1) } break; case 2: @@ -2734,8 +2736,7 @@ static void insp_mkrow_utf8 (int col, int row) { doPUT(buf4) break; default: - buf1[0] = ' '; - doPUT(buf1) + mkNUL break; } } else { @@ -2749,6 +2750,7 @@ static void insp_mkrow_utf8 (int col, int row) { #undef maxSZ #undef mkFND #undef mkCTL + #undef mkNUL #undef doPUT } // end: insp_mkrow_utf8 -- 2.40.0