- Bug #891637, patch #1005466: fix inspect.getargs() crash on def foo((bar)).

This commit is contained in:
Matthias Klose 2004-08-15 17:04:33 +00:00
parent e5069019e7
commit 2e829c0214
3 changed files with 25 additions and 7 deletions

View file

@ -624,14 +624,22 @@ def getargs(co):
count.append(value)
elif opname == 'STORE_FAST':
stack.append(names[value])
remain[-1] = remain[-1] - 1
while remain[-1] == 0:
remain.pop()
size = count.pop()
stack[-size:] = [stack[-size:]]
if not remain: break
# Special case for sublists of length 1: def foo((bar))
# doesn't generate the UNPACK_TUPLE bytecode, so if
# `remain` is empty here, we have such a sublist.
if not remain:
stack[0] = [stack[0]]
break
else:
remain[-1] = remain[-1] - 1
if not remain: break
while remain[-1] == 0:
remain.pop()
size = count.pop()
stack[-size:] = [stack[-size:]]
if not remain: break
remain[-1] = remain[-1] - 1
if not remain: break
args[i] = stack[0]
varargs = None