Issue #1445: Fix a SystemError when accessing the ``cell_contents``
attribute of an empty cell object. Now a ValueError is raised.
This commit is contained in:
parent
6dae85f409
commit
ce7d10ccc4
|
@ -242,6 +242,17 @@ def test_func_closure():
|
|||
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 test_im_name():
|
|||
|
||||
def testmore():
|
||||
test_func_closure()
|
||||
test_empty_cell()
|
||||
test_func_doc()
|
||||
test_func_globals()
|
||||
test_func_name()
|
||||
|
|
|
@ -12,6 +12,9 @@ What's New in Python 2.6 alpha 1?
|
|||
Core and builtins
|
||||
-----------------
|
||||
|
||||
- Issue #1445: Fix a SystemError when accessing the ``cell_contents``
|
||||
attribute of an empty cell object.
|
||||
|
||||
- Issue #1460: The utf-7 incremental decoder did not accept truncated input.
|
||||
It now correctly saves its state between chunks of data.
|
||||
|
||||
|
|
|
@ -89,7 +89,12 @@ cell_clear(PyCellObject *op)
|
|||
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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue