mirror of
https://github.com/vim/vim.git
synced 2025-09-24 03:44:06 -04:00
patch 8.1.0502: internal diff fails when diffing a context diff
Problem: Internal diff fails when diffing a context diff. (Hirohito Higashi) Solution: Only use callback calls with one line. (closes #3581)
This commit is contained in:
18
src/diff.c
18
src/diff.c
@@ -3206,21 +3206,23 @@ parse_diff_unified(
|
|||||||
xdiff_out(void *priv, mmbuffer_t *mb, int nbuf)
|
xdiff_out(void *priv, mmbuffer_t *mb, int nbuf)
|
||||||
{
|
{
|
||||||
diffout_T *dout = (diffout_T *)priv;
|
diffout_T *dout = (diffout_T *)priv;
|
||||||
int i;
|
|
||||||
char_u *p;
|
char_u *p;
|
||||||
|
|
||||||
for (i = 0; i < nbuf; i++)
|
// The header line always comes by itself, text lines in at least two
|
||||||
{
|
// parts. We drop the text part.
|
||||||
// We are only interested in the header lines, skip text lines.
|
if (nbuf > 1)
|
||||||
if (STRNCMP(mb[i].ptr, "@@ ", 3) != 0)
|
return 0;
|
||||||
continue;
|
|
||||||
|
// sanity check
|
||||||
|
if (STRNCMP(mb[0].ptr, "@@ ", 3) != 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
if (ga_grow(&dout->dout_ga, 1) == FAIL)
|
if (ga_grow(&dout->dout_ga, 1) == FAIL)
|
||||||
return -1;
|
return -1;
|
||||||
p = vim_strnsave((char_u *)mb[i].ptr, mb[i].size);
|
p = vim_strnsave((char_u *)mb[0].ptr, mb[0].size);
|
||||||
if (p == NULL)
|
if (p == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
((char_u **)dout->dout_ga.ga_data)[dout->dout_ga.ga_len++] = p;
|
((char_u **)dout->dout_ga.ga_data)[dout->dout_ga.ga_len++] = p;
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
20
src/testdir/dumps/Test_diff_of_diff_01.dump
Normal file
20
src/testdir/dumps/Test_diff_of_diff_01.dump
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
| +0#0000e05#a8a8a8255@1|a+0#0000000#ffffff0@1| @32||+1&&| +0#0000e05#a8a8a8255@1>a+0#0000000#ffffff0@1| @32
|
||||||
|
| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0@1| @32||+1&&| +0#0000e05#a8a8a8255@1|b+0#0000000#ffffff0@1| @32
|
||||||
|
| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0@1| @32||+1&&| +0#0000e05#a8a8a8255@1|c+0#0000000#ffffff0@1| @32
|
||||||
|
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|@+0#0000000#5fd7ff255@1| |-|3|,|2| |+|5|,|7| |@@1| @19
|
||||||
|
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|d+0#0000000#5fd7ff255@1| @32
|
||||||
|
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|e+0#0000000#5fd7ff255@1| @32
|
||||||
|
| +0#0000e05#a8a8a8255@1|-+0#4040ff13#afffff255@34||+1#0000000#ffffff0| +0#0000e05#a8a8a8255@1|f+0#0000000#5fd7ff255@1| @32
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33||+1#0000000&| +0#0000e05#a8a8a8255@1|~+0#4040ff13#ffffff0| @33
|
||||||
|
|[+1#0000000&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1| |[+3&&|N|o| |N|a|m|e|]| |[|+|]| @5|1|,|1| @11|A|l@1
|
||||||
|
| +0&&@74
|
@@ -792,6 +792,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
502,
|
||||||
/**/
|
/**/
|
||||||
501,
|
501,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user