diff_T *thistopdiff = NULL;
diff_T *next_adjacent_blocks = NULL;
int virtual_lines_passed = 0;
+ int curlinenum_to = 1;
find_top_diff_block(&thistopdiff, &next_adjacent_blocks, fromidx, from_topline);
// move the same amount of virtual lines in the target buffer to find the
// cursor's line number
- int curlinenum_to = thistopdiff->df_lnum[toidx];
+ if (thistopdiff != NULL)
+ curlinenum_to = thistopdiff->df_lnum[toidx];
int virt_lines_left = virtual_lines_passed;
curdif = thistopdiff;
call s:RunCommandAndWait(buf, args ..
\ ' ; echo "crash 5: [OK]" >> '.. result)
+ let file = 'Xdiff'
+ let lines =<< trim END
+ diffs a
+ edit Xdiff
+ file b
+ exe "norm! \<C-w>\<C-w>"
+ exe "norm! \<C-w>\<C-w>"
+ exe "norm! \<C-w>\<C-w>"
+ exe "norm! \<C-w>\<C-w>"
+ exe "norm! \<C-w>\<C-w>"
+ exe "norm! \<C-w>\L"
+ exe "norm! \<C-j>oy\<C-j>"
+ edit Xdiff
+ sil!so
+ END
+ call writefile(lines, file, 'D')
+ let cmn_args = "%s -u NONE -i NONE -X -m -n -e -s -u %s -c ':qa!'"
+ let args = printf(cmn_args, vim, file)
+ call s:RunCommandAndWait(buf, args ..
+ \ ' && echo "crash 6: [OK]" >> '.. result)
+
+
" clean up
exe buf .. "bw!"
exe "sp " .. result
\ 'crash 3: [OK]',
\ 'crash 4: [OK]',
\ 'crash 5: [OK]',
+ \ 'crash 6: [OK]',
\ ]
call assert_equal(expected, getline(1, '$'))