patch 9.1.0221: lines following virt text (that fills the window)  might be truncated

Problem:  The if branch to set `text_prop_follows` was both checking if
          it was at the end of the buffer text line or if it was at the
          end of the screen line, but the former being true skipped
          a guard condition in the latter to only consider 'below'
          virtual text to follow. `text_prop_follows` being improperly
          set caused it to skip a conditional block to break at the end
          as well as one to move `ptr` to the end of the text line,
          while repeated for each following line of the window.
Solution: Move the check for whether 'below' virtual text should follow
          so it is also used when at the end of the buffer text line.
          (Dylan Thacker-Smith)

fixes: #12213
related: #14307

Signed-off-by: Dylan Thacker-Smith <dylan.ah.smith@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/drawline.c b/src/drawline.c
index 103760f..8abe8bf 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -2323,15 +2323,17 @@
 		else if (text_prop_next < text_prop_count
 			   && text_props[text_prop_next].tp_col == MAXCOL
 			   && ((*ptr != NUL && ptr[mb_ptr2len(ptr)] == NUL)
-			       || (!wp->w_p_wrap
-				       && wlv.col == wp->w_width - 1
-				       && (text_props[text_prop_next].tp_flags
-						      & TP_FLAG_ALIGN_BELOW))))
+			       || (!wp->w_p_wrap && wlv.col == wp->w_width - 1)))
+		{
 		    // When at last-but-one character and a text property
 		    // follows after it, we may need to flush the line after
 		    // displaying that character.
 		    // Or when not wrapping and at the rightmost column.
-		    text_prop_follows = TRUE;
+		    int only_below_follows = !wp->w_p_wrap && wlv.col == wp->w_width - 1;
+		    if (!only_below_follows
+			    || (text_props[text_prop_next].tp_flags & TP_FLAG_ALIGN_BELOW))
+			text_prop_follows = TRUE;
+		}
 	    }
 
 	    if (wlv.start_extra_for_textprop)