From bb3628e898331edcd82da5d6291ef7c8812be267 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Fri, 15 Sep 2006 13:17:27 +0000 Subject: assume width 1 for control characters; don't crash if width of repeated padding string is 0 --- Src/prompt.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'Src/prompt.c') diff --git a/Src/prompt.c b/Src/prompt.c index 974f70e40..fc0c7ea47 100644 --- a/Src/prompt.c +++ b/Src/prompt.c @@ -944,10 +944,15 @@ countprompt(char *str, int *wp, int *hp, int overf) multi = 0; break; default: - /* If the character isn't printable, wcwidth() returns -1. */ + /* + * If the character isn't printable, wcwidth() returns + * -1. We assume width 1. + */ wcw = wcwidth(wc); - if (wcw > 0) + if (wcw >= 0) w += wcw; + else + w++; multi = 0; break; } @@ -1152,8 +1157,10 @@ prompttrunc(int arg, int truncchar, int doprint, int endchar) break; default: wcw = wcwidth(cc); - if (wcw > 0) + if (wcw >= 0) remw -= wcw; + else + remw--; break; } #else @@ -1215,8 +1222,10 @@ prompttrunc(int arg, int truncchar, int doprint, int endchar) break; default: wcw = wcwidth(cc); - if (wcw > 0) + if (wcw >= 0) maxwidth -= wcw; + else + maxwidth--; break; } #else -- cgit 1.4.1