diff src/eval.c @ 3108:8aca621c0091 v7.3.325

updated for version 7.3.325 Problem: A duplicated function argument gives an internal error. Solution: Give a proper error message. (based on patch by Tyru)
author Bram Moolenaar <bram@vim.org>
date Fri, 30 Sep 2011 16:39:48 +0200
parents 2cbde6bcc623
children ec901ddc84d5
line wrap: on
line diff
--- a/src/eval.c
+++ b/src/eval.c
@@ -20461,6 +20461,7 @@ ex_function(eap)
     exarg_T	*eap;
 {
     char_u	*theline;
+    int		i;
     int		j;
     int		c;
     int		saved_did_emsg;
@@ -20707,6 +20708,15 @@ ex_function(eap)
 	    arg = vim_strsave(arg);
 	    if (arg == NULL)
 		goto erret;
+
+	    /* Check for duplicate argument name. */
+	    for (i = 0; i < newargs.ga_len; ++i)
+		if (STRCMP(((char_u **)(newargs.ga_data))[i], arg) == 0)
+		{
+		    EMSG2(_("E853: Duplicate argument name: %s"), arg);
+		    goto erret;
+		}
+
 	    ((char_u **)(newargs.ga_data))[newargs.ga_len] = arg;
 	    *p = c;
 	    newargs.ga_len++;