[Python-checkins] r59171 - in python/branches/release25-maint: Lib/test/test_funcattrs.py Misc/NEWS Objects/cellobject.c
amaury.forgeotdarc
python-checkins at python.org
Sat Nov 24 14:53:29 CET 2007
Author: amaury.forgeotdarc
Date: Sat Nov 24 14:53:29 2007
New Revision: 59171
Modified:
python/branches/release25-maint/Lib/test/test_funcattrs.py
python/branches/release25-maint/Misc/NEWS
python/branches/release25-maint/Objects/cellobject.c
Log:
Issue #1445: Fix a SystemError when accessing the ``cell_contents``
attribute of an empty cell object. Now a ValueError is raised.
Backport of r59170.
Modified: python/branches/release25-maint/Lib/test/test_funcattrs.py
==============================================================================
--- python/branches/release25-maint/Lib/test/test_funcattrs.py (original)
+++ python/branches/release25-maint/Lib/test/test_funcattrs.py Sat Nov 24 14:53:29 2007
@@ -242,6 +242,17 @@
verify(c[0].__class__.__name__ == "cell") # don't have a type object handy
cantset(f, "func_closure", c)
+def test_empty_cell():
+ def f(): print a
+ try:
+ f.func_closure[0].cell_contents
+ except ValueError:
+ pass
+ else:
+ raise TestFailed, "shouldn't be able to read an empty cell"
+
+ a = 12
+
def test_func_doc():
def f(): pass
verify(f.__doc__ is None)
@@ -385,6 +396,7 @@
def testmore():
test_func_closure()
+ test_empty_cell()
test_func_doc()
test_func_globals()
test_func_name()
Modified: python/branches/release25-maint/Misc/NEWS
==============================================================================
--- python/branches/release25-maint/Misc/NEWS (original)
+++ python/branches/release25-maint/Misc/NEWS Sat Nov 24 14:53:29 2007
@@ -1,4 +1,4 @@
-+++++++++++
++++++++++++
Python News
+++++++++++
@@ -12,6 +12,9 @@
Core and builtins
-----------------
+- Issue #1445: Fix a SystemError when accessing the ``cell_contents``
+ attribute of an empty cell object.
+
- Issue #1265: Fix a problem with sys.settrace, if the tracing function uses a
generator expression when at the same time the executed code is closing a
paused generator.
Modified: python/branches/release25-maint/Objects/cellobject.c
==============================================================================
--- python/branches/release25-maint/Objects/cellobject.c (original)
+++ python/branches/release25-maint/Objects/cellobject.c Sat Nov 24 14:53:29 2007
@@ -89,7 +89,12 @@
static PyObject *
cell_get_contents(PyCellObject *op, void *closure)
{
- Py_XINCREF(op->ob_ref);
+ if (op->ob_ref == NULL)
+ {
+ PyErr_SetString(PyExc_ValueError, "Cell is empty");
+ return NULL;
+ }
+ Py_INCREF(op->ob_ref);
return op->ob_ref;
}
More information about the Python-checkins
mailing list