summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Bradshaw <robertwb@gmail.com>2017-07-10 21:40:44 -0700
committerRobert Bradshaw <robertwb@gmail.com>2017-07-10 22:14:36 -0700
commitc824a3822c8b37dc49e23d9ed82036a5565075c1 (patch)
treec4f702d43fd1d847adbe87ab47d9baaaf6185b55
parent866c3e8a178a9ef32ea084e6d700a054cce921dc (diff)
downloadcython-c824a3822c8b37dc49e23d9ed82036a5565075c1.tar.gz
Fix #1767
-rw-r--r--Cython/Compiler/Nodes.py8
1 files changed, 5 insertions, 3 deletions
diff --git a/Cython/Compiler/Nodes.py b/Cython/Compiler/Nodes.py
index 0d6da858f..17cbfe78b 100644
--- a/Cython/Compiler/Nodes.py
+++ b/Cython/Compiler/Nodes.py
@@ -3621,10 +3621,12 @@ class DefNodeWrapper(FuncDefNode):
reversed_args = list(enumerate(positional_args))[::-1]
for i, arg in reversed_args:
if i >= min_positional_args-1:
+ if i != reversed_args[0][0]:
+ code.putln('CYTHON_FALLTHROUGH;')
code.put('case %2d: ' % (i+1))
code.putln("values[%d] = PyTuple_GET_ITEM(%s, %d);" % (i, Naming.args_cname, i))
- code.putln('CYTHON_FALLTHROUGH;')
if min_positional_args == 0:
+ code.putln('CYTHON_FALLTHROUGH;')
code.put('case 0: ')
code.putln('break;')
if self.star_arg:
@@ -3781,6 +3783,8 @@ class DefNodeWrapper(FuncDefNode):
if self.star_arg and i == max_positional_args:
code.putln('default:')
else:
+ if i != 0:
+ code.putln('CYTHON_FALLTHROUGH;')
code.putln('case %2d:' % i)
pystring_cname = code.intern_identifier(arg.name)
if arg.default:
@@ -3819,8 +3823,6 @@ class DefNodeWrapper(FuncDefNode):
self.name, pystring_cname))
code.putln(code.error_goto(self.pos))
code.putln('}')
- if max_positional_args > 0 and i < last_required_arg:
- code.putln('CYTHON_FALLTHROUGH;')
if max_positional_args > 0:
code.putln('}')