patch 8.2.3116: Vim9: crash when debugging a function with line continuation
Problem: Vim9: crash when debugging a function with line continuation.
Solution: Check for a NULL pointer. (closes #8521)
diff --git a/src/testdir/test_debugger.vim b/src/testdir/test_debugger.vim
index 97e115b..5b12c58 100644
--- a/src/testdir/test_debugger.vim
+++ b/src/testdir/test_debugger.vim
@@ -1009,6 +1009,7 @@
eval 1
enddef
enddef
+
def g:FuncComment()
# comment
echo "first"
@@ -1016,6 +1017,7 @@
# comment
echo "second"
enddef
+
def g:FuncForLoop()
eval 1
for i in [11, 22, 33]
@@ -1023,6 +1025,11 @@
endfor
echo "done"
enddef
+
+ def g:FuncWithSplitLine()
+ eval 1
+ | eval 2
+ enddef
END
call writefile(file, 'Xtest.vim')
@@ -1078,6 +1085,12 @@
call RunDbgCmd(buf, 'next', ['function FuncForLoop', 'line 2: for i in [11, 22, 33]'])
call RunDbgCmd(buf, 'echo i', ['22'])
+ call RunDbgCmd(buf, 'breakdel *')
+ call RunDbgCmd(buf, 'cont')
+
+ call RunDbgCmd(buf, ':breakadd func FuncWithSplitLine')
+ call RunDbgCmd(buf, ':call FuncWithSplitLine()', ['function FuncWithSplitLine', 'line 1: eval 1 | eval 2'])
+
call RunDbgCmd(buf, 'cont')
call StopVimInTerminal(buf)
call delete('Xtest.vim')
diff --git a/src/version.c b/src/version.c
index e2f74e9..1deb3e4 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 3116,
+/**/
3115,
/**/
3114,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index b194e6a..87f3c42 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1497,9 +1497,11 @@
ga_init2(&ga, sizeof(char_u *), 10);
for (lnum = iptr->isn_lnum; lnum < end_lnum; ++lnum)
{
- char_u *p = skipwhite(
- ((char_u **)ufunc->uf_lines.ga_data)[lnum - 1]);
+ char_u *p = ((char_u **)ufunc->uf_lines.ga_data)[lnum - 1];
+ if (p == NULL)
+ continue; // left over from continuation line
+ p = skipwhite(p);
if (*p == '#')
break;
if (ga_grow(&ga, 1) == OK)