Problem: Reading one byte beyond the end of the line.
Solution: Check for NUL byte first.
}
// Check for "++nr" and "--nr".
- if (p == eap->cmd && p[0] == p[1] && (*p == '+' || *p == '-'))
+ if (p == eap->cmd && p[0] != NUL && p[0] == p[1]
+ && (*p == '+' || *p == '-'))
{
eap->cmdidx = *p == '+' ? CMD_increment : CMD_decrement;
return eap->cmd + 2;
unlet g:mydict
enddef
+def Test_go_beyond_end_of_cmd()
+ # this was reading the byte after the end of the line
+ var lines =<< trim END
+ def F()
+ cal
+ enddef
+ defcompile
+ END
+ CheckScriptFailure(lines, 'E476:')
+enddef
+
if has('python3')
def Test_python3_heredoc()
py3 << trim EOF
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 4009,
/**/
4008,
/**/
cmd = ea.cmd;
if ((*cmd != '$' || starts_with_colon)
&& (starts_with_colon || !(*cmd == '\''
- || (cmd[0] == cmd[1] && (*cmd == '+' || *cmd == '-')))))
+ || (cmd[0] != NUL && cmd[0] == cmd[1]
+ && (*cmd == '+' || *cmd == '-')))))
{
ea.cmd = skip_range(ea.cmd, TRUE, NULL);
if (ea.cmd > cmd)