Commit e2af34fc authored by Serhiy Storchaka's avatar Serhiy Storchaka Committed by GitHub

bpo-35504: Fix a SystemError when delete the characters_written attribute of an OSError. (GH-11172)

parent fae95874
......@@ -150,10 +150,15 @@ class AttributesTest(unittest.TestCase):
e = BlockingIOError(*args[:n])
with self.assertRaises(AttributeError):
e.characters_written
with self.assertRaises(AttributeError):
del e.characters_written
e = BlockingIOError("a", "b", 3)
self.assertEqual(e.characters_written, 3)
e.characters_written = 5
self.assertEqual(e.characters_written, 5)
del e.characters_written
with self.assertRaises(AttributeError):
e.characters_written
class ExplicitSubclassingTest(unittest.TestCase):
......
Fixed a SystemError when delete the characters_written attribute of an OSError.
......@@ -1196,6 +1196,14 @@ OSError_written_get(PyOSErrorObject *self, void *context)
static int
OSError_written_set(PyOSErrorObject *self, PyObject *arg, void *context)
{
if (arg == NULL) {
if (self->written == -1) {
PyErr_SetString(PyExc_AttributeError, "characters_written");
return -1;
}
self->written = -1;
return 0;
}
Py_ssize_t n;
n = PyNumber_AsSsize_t(arg, PyExc_ValueError);
if (n == -1 && PyErr_Occurred())
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment