updated for version 7.4.617
Problem:    Wrong ":argdo" range does not cause an error.
Solution:   Reset "cmd" to NULL. (Marcin Szamotulski, Ingo Karkat)
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index a59bbd1..453d83e 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -4405,6 +4405,7 @@
 		if (addr_type != ADDR_LINES)
 		{
 		    EMSG(_(e_invaddr));
+		    cmd = NULL;
 		    goto error;
 		}
 		if (skip)
@@ -4436,6 +4437,7 @@
 		if (addr_type != ADDR_LINES)
 		{
 		    EMSG(_(e_invaddr));
+		    cmd = NULL;
 		    goto error;
 		}
 		if (skip)	/* skip "/pat/" */
@@ -4484,6 +4486,7 @@
 		if (addr_type != ADDR_LINES)
 		{
 		    EMSG(_(e_invaddr));
+		    cmd = NULL;
 		    goto error;
 		}
 		if (*cmd == '&')
@@ -4575,7 +4578,8 @@
 		n = getdigits(&cmd);
 	    if (addr_type == ADDR_LOADED_BUFFERS
 		    || addr_type == ADDR_BUFFERS)
-		lnum = compute_buffer_local_count(addr_type, lnum, (i == '-') ? -1 * n : n);
+		lnum = compute_buffer_local_count(
+				    addr_type, lnum, (i == '-') ? -1 * n : n);
 	    else if (i == '-')
 		lnum -= n;
 	    else
@@ -4662,7 +4666,8 @@
 		    return (char_u *)_(e_invrange);
 		break;
 	    case ADDR_ARGUMENTS:
-		if (eap->line2 > ARGCOUNT + (!ARGCOUNT))    // add 1 if ARCOUNT is 0
+		/* add 1 if ARGCOUNT is 0 */
+		if (eap->line2 > ARGCOUNT + (!ARGCOUNT))
 		    return (char_u *)_(e_invrange);
 		break;
 	    case ADDR_BUFFERS: