summaryrefslogtreecommitdiff
path: root/Python/compile.c
diff options
context:
space:
mode:
Diffstat (limited to 'Python/compile.c')
-rw-r--r--Python/compile.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/Python/compile.c b/Python/compile.c
index 8cf85a7383..068c10e8ac 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;