forked from aniani/vim
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)
This commit is contained in:
@@ -1834,6 +1834,26 @@ script_dump_profile(FILE *fd)
|
||||
{
|
||||
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)
|
||||
{
|
||||
|
Reference in New Issue
Block a user