updated for version 7.4.665
Problem:    'linebreak' does not work properly with multi-byte characters.
Solution:   Compute the pointer offset with mb_head_off().  (Yasuhiro
            Matsumoto)
diff --git a/src/screen.c b/src/screen.c
index 1d4fdd3..1addd0a 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -4484,11 +4484,15 @@
 		 */
 		if (wp->w_p_lbr && vim_isbreak(c) && !vim_isbreak(*ptr))
 		{
+# ifdef FEAT_MBYTE
+		    int off = has_mbyte ? (*mb_head_off)(line, ptr - 1) : 0;
+# endif
 		    char_u *p = ptr - (
 # ifdef FEAT_MBYTE
-				has_mbyte ? mb_l :
+				off +
 # endif
 				1);
+
 		    /* TODO: is passing p for start of the line OK? */
 		    n_extra = win_lbr_chartabsize(wp, line, p, (colnr_T)vcol,
 								    NULL) - 1;
@@ -4496,7 +4500,11 @@
 			n_extra = (int)wp->w_buffer->b_p_ts
 				       - vcol % (int)wp->w_buffer->b_p_ts - 1;
 
+# ifdef FEAT_MBYTE
+		    c_extra = off > 0 ? MB_FILLER_CHAR : ' ';
+# else
 		    c_extra = ' ';
+# endif
 		    if (vim_iswhite(c))
 		    {
 #ifdef FEAT_CONCEAL
diff --git a/src/version.c b/src/version.c
index 265145a..a9b8043 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    665,
+/**/
     664,
 /**/
     663,