From 8a10ea4613e0bbcd067609d8d205b6ca71420f08 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Wed, 21 Mar 2007 09:00:55 +0000 Subject: Patch #1682205: a TypeError while unpacking an iterable is no longer masked by a generic one with the message "unpack non-sequence". (backport from rev. 54480) --- Lib/test/test_unpack.py | 2 +- Misc/NEWS | 3 +++ Python/ceval.c | 8 +++----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Lib/test/test_unpack.py b/Lib/test/test_unpack.py index 3f72648..76a4822 100644 --- a/Lib/test/test_unpack.py +++ b/Lib/test/test_unpack.py @@ -55,7 +55,7 @@ Unpacking non-sequence >>> a, b, c = 7 Traceback (most recent call last): ... - TypeError: unpack non-sequence + TypeError: 'int' object is not iterable Unpacking tuple of wrong size diff --git a/Misc/NEWS b/Misc/NEWS index 2eea8b9..d8c8871 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 2.5.1c1? Core and builtins ----------------- +- Patch #1682205: a TypeError while unpacking an iterable is no longer + masked by a generic one with the message "unpack non-sequence". + - Patch #1642547: Fix an error/crash when encountering syntax errors in complex if statements. diff --git a/Python/ceval.c b/Python/ceval.c index 690b2be..9dddd2f 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -1765,12 +1765,10 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag) PUSH(w); } } else if (unpack_iterable(v, oparg, - stack_pointer + oparg)) + stack_pointer + oparg)) { stack_pointer += oparg; - else { - if (PyErr_ExceptionMatches(PyExc_TypeError)) - PyErr_SetString(PyExc_TypeError, - "unpack non-sequence"); + } else { + /* unpack_iterable() raised an exception */ why = WHY_EXCEPTION; } Py_DECREF(v); -- cgit v0.12