patch 8.0.1372: profile log may be truncated halfway a character

Problem:    Profile log may be truncated halfway a character.
Solution:   Find the start of the character. (Ozaki Kiichi, closes #2385)
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index e2416057..7b00ac2 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1834,6 +1834,26 @@
 		{
 		    if (vim_fgets(IObuff, IOSIZE, sfd))
 			break;
+		    /* When a line has been truncated, append NL, taking care
+		     * of multi-byte characters . */
+		    if (IObuff[IOSIZE - 2] != NUL && IObuff[IOSIZE - 2] != NL)
+		    {
+			int n = IOSIZE - 2;
+# ifdef FEAT_MBYTE
+			if (enc_utf8)
+			{
+			    /* Move to the first byte of this char.
+			     * utf_head_off() doesn't work, because it checks
+			     * for a truncated character. */
+			    while (n > 0 && (IObuff[n] & 0xc0) == 0x80)
+				--n;
+			}
+			else if (has_mbyte)
+			    n -= mb_head_off(IObuff, IObuff + n);
+# endif
+			IObuff[n] = NL;
+			IObuff[n + 1] = NUL;
+		    }
 		    if (i < si->sn_prl_ga.ga_len
 				     && (pp = &PRL_ITEM(si, i))->snp_count > 0)
 		    {