From 69784d51db317c37c80e4be6793b2e8596b9b4b6 Mon Sep 17 00:00:00 2001 From: Benno Schulenberg Date: Wed, 8 Mar 2017 14:32:36 +0100 Subject: [PATCH] screen: don't push the longer-line indicator ($) to the next row If the last two columns of a row would be taken up by a double-width character (and the line is longer than that), don't print it, because it wouldn't leave any room for the $ character. This fixes https://savannah.gnu.org/bugs/?50491. Reported-by: David Lawrence Ramsey --- src/winio.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/winio.c b/src/winio.c index 3f43d031..73fdcddf 100644 --- a/src/winio.c +++ b/src/winio.c @@ -1928,6 +1928,10 @@ char *display_string(const char *buf, size_t start_col, size_t span, /* Null-terminate converted. */ converted[index] = '\0'; + /* If there is more text than can be shown, make room for the $. */ + if (*buf != '\0' && isdata && !ISSET(SOFTWRAP)) + span--; + /* Make sure converted takes up no more than span columns. */ index = actual_x(converted, span); null_at(&converted, index);