From d5a9965cdee5c1dffa251d273212a26f09de0fcc 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 d0b8bdc0..aef95ead 100644 --- a/top/top.c +++ b/top/top.c @@ -3157,6 +3157,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]; @@ -3176,6 +3177,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: @@ -3191,8 +3193,7 @@ static void insp_mkrow_utf8 (int col, int row) { doPUT(buf4) break; default: - buf1[0] = ' '; - doPUT(buf1) + mkNUL break; } } else { @@ -3206,6 +3207,7 @@ static void insp_mkrow_utf8 (int col, int row) { #undef maxSZ #undef mkFND #undef mkCTL + #undef mkNUL #undef doPUT } // end: insp_mkrow_utf8