From 11384c60f625f2f050cd51baa1333115fa95ab6c Mon Sep 17 00:00:00 2001
From: Peter Schneider-Kamp <nowonder@nowonder.de>
Date: Thu, 13 Jul 2000 06:15:04 +0000
Subject: raise error on duplicate function arguments

example:

>>> def f(a,a):print a
...
SyntaxError: duplicate argument in function definition
---
 Python/compile.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/Python/compile.c b/Python/compile.c
index 8cf85a7..068c10e 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -3092,6 +3092,7 @@ com_arglist(c, n)
 		node *ch = CHILD(n, i);
 		node *fp;
 		char *name;
+		PyObject *nameval;
 		if (TYPE(ch) == STAR || TYPE(ch) == DOUBLESTAR)
 			break;
 		REQ(ch, fpdef); /* fpdef: NAME | '(' fplist ')' */
@@ -3103,7 +3104,15 @@ com_arglist(c, n)
 			sprintf(nbuf, ".%d", i);
 			complex = 1;
 		}
-		com_newlocal(c, name);
+		nameval = PyString_InternFromString(name);
+		if (nameval == NULL) {
+			c->c_errors++;
+		}
+                if (PyDict_GetItem(c->c_locals, nameval)) {
+			com_error(c, PyExc_SyntaxError,"duplicate argument in function definition");
+		}
+		com_newlocal_o(c, nameval);
+		Py_DECREF(nameval);
 		c->c_argcount++;
 		if (++i >= nch)
 			break;
-- 
cgit v0.12

