endtry
return var1
endfunc
+ def Vim9Func()
+ for cmd in ['confirm', 'xxxxxxx']
+ for _ in [1, 2]
+ echo cmd
+ endfor
+ endfor
+ enddef
END
call writefile(lines, 'Xtest.vim')
\ 'line 5: catch'])
call RunDbgCmd(buf, 'c')
+ " Test showing local variable in :def function
+ call RunDbgCmd(buf, ':breakadd func 2 Vim9Func')
+ call RunDbgCmd(buf, ':call Vim9Func()', ['line 2: for _ in [1, 2]'])
+ call RunDbgCmd(buf, 'next', ['line 2: for _ in [1, 2]'])
+ call RunDbgCmd(buf, 'echo cmd', ['confirm'])
+ call RunDbgCmd(buf, 'breakdel *')
+ call RunDbgCmd(buf, 'cont')
+
" Test for :quit
call RunDbgCmd(buf, ':debug echo Foo()')
call RunDbgCmd(buf, 'breakdel *')
// Go through the local variable names, from last to first.
for (idx = debug_var_count - 1; idx >= 0; --idx)
{
- if (STRCMP(((char_u **)dfunc->df_var_names.ga_data)[idx], name) == 0)
+ char_u *varname = ((char_u **)dfunc->df_var_names.ga_data)[idx];
+
+ // the variable name may be NULL when not available in this block
+ if (varname != NULL && STRCMP(varname, name) == 0)
return STACK_TV_VAR(idx);
}