patch 9.0.1813: linebreak incorrect drawn with breakindent

Problem: 'linebreak' is incorrectly drawn after 'breakindent'.
Solution: Don't include 'breakindent' size when already after it.

closes: #12937
closes: #12940

Signed-off-by: Christian Brabandt <cb@256bit.org>
Co-authored-by: zeertzjq <zeertzjq@outlook.com>
diff --git a/src/charset.c b/src/charset.c
index 1c7f7d7..03ef3fd 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -1319,6 +1319,9 @@
 	vcol -= wp->w_virtcol_first_char;
 #endif
 	colnr_T	wcol = vcol + col_off_prev;
+	colnr_T	max_head_vcol = cts->cts_max_head_vcol;
+	int	added = 0;
+
 	// cells taken by 'showbreak'/'breakindent' before current char
 	int	head_prev = 0;
 	if (wcol >= wp->w_width)
@@ -1332,23 +1335,18 @@
 	    if (wp->w_p_bri)
 		head_prev += get_breakindent_win(wp, line);
 	    if (wcol < head_prev)
-		wcol = head_prev;
-	    wcol += col_off_prev;
-	}
-
-	if ((vcol > 0 && wcol == col_off_prev + head_prev)
-						  || wcol + size > wp->w_width)
-	{
-	    int added = 0;
-	    colnr_T max_head_vcol = cts->cts_max_head_vcol;
-
-	    if (vcol > 0 && wcol == col_off_prev + head_prev)
 	    {
+		head_prev -= wcol;
+		wcol += head_prev;
 		added += head_prev;
 		if (max_head_vcol <= 0 || vcol < max_head_vcol)
 		    head += head_prev;
 	    }
+	    wcol += col_off_prev;
+	}
 
+	if (wcol + size > wp->w_width)
+	{
 	    // cells taken by 'showbreak'/'breakindent' halfway current char
 	    int	head_mid = 0;
 	    if (*sbr != NUL)
@@ -1384,9 +1382,9 @@
 		}
 #endif
 	    }
-
-	    size += added;
 	}
+
+	size += added;
     }
     if (headp != NULL)
 	*headp = head;