unpack_iterable(): Add a missing DECREF in an error case.  Reported by
Armin Rigo (SF bug #488477).  Added a testcase to test_unpack_iter()
in test_iter.py.
diff --git a/Lib/test/test_iter.py b/Lib/test/test_iter.py
index 5bd7ba4..13ed5bd 100644
--- a/Lib/test/test_iter.py
+++ b/Lib/test/test_iter.py
@@ -747,6 +747,29 @@
         (a, b), (c,) = IteratingSequenceClass(2), {42: 24}
         self.assertEqual((a, b, c), (0, 1, 42))
 
+        # Test reference count behavior
+
+        class C(object):
+            count = 0
+            def __new__(cls):
+                cls.count += 1
+                return object.__new__(cls)
+            def __del__(self):
+                cls = self.__class__
+                assert cls.count > 0
+                cls.count -= 1
+        x = C()
+        self.assertEqual(C.count, 1)
+        del x
+        self.assertEqual(C.count, 0)
+        l = [C(), C(), C()]
+        self.assertEqual(C.count, 3)
+        try:
+            a, b = iter(l)
+        except ValueError:
+            pass
+        del l
+        self.assertEqual(C.count, 0)
 
 def test_main():
     run_unittest(TestCase)
diff --git a/Python/ceval.c b/Python/ceval.c
index fd602b0..b41ef5a 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2796,6 +2796,7 @@
 		Py_DECREF(it);
 		return 1;
 	}
+	Py_DECREF(w);
 	PyErr_SetString(PyExc_ValueError, "too many values to unpack");
 	/* fall through */
 Error: