| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -836,6 +836,8 @@ def test_operations_on_half_initialized_Struct(self): | |||
| 836 | 836 | self.assertRaises(RuntimeError, S.unpack, spam) | |
| 837 | 837 | self.assertRaises(RuntimeError, S.unpack_from, spam) | |
| 838 | 838 | self.assertRaises(RuntimeError, getattr, S, 'format') | |
| 839 | + self.assertRaises(RuntimeError, S.__sizeof__) | ||
| 840 | + self.assertRaises(RuntimeError, repr, S) | ||
| 839 | 841 | self.assertEqual(S.size, -1) | |
| 840 | 842 | ||
| 841 | 843 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,3 @@ | |||
| 1 | + Fix crash in :mod:`struct` when calling :func:`repr` or | ||
| 2 | + ``__sizeof__()`` on an uninitialized :class:`struct.Struct` | ||
| 3 | + object created via ``Struct.__new__()`` without calling ``__init__()``. | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2382,6 +2382,7 @@ static PyObject * | |||
| 2382 | 2382 | Struct___sizeof___impl(PyStructObject *self) | |
| 2383 | 2383 | /*[clinic end generated code: output=2d0d78900b4cdb4e input=faca5925c1f1ffd0]*/ | |
| 2384 | 2384 | { | |
| 2385 | + ENSURE_STRUCT_IS_READY(self); | ||
| 2385 | 2386 | size_t size = _PyObject_SIZE(Py_TYPE(self)) + sizeof(formatcode); | |
| 2386 | 2387 | for (formatcode *code = self->s_codes; code->fmtdef != NULL; code++) { | |
| 2387 | 2388 | size += sizeof(formatcode); | |
@@ -2393,6 +2394,7 @@ static PyObject * | |||
| 2393 | 2394 | s_repr(PyObject *op) | |
| 2394 | 2395 | { | |
| 2395 | 2396 | PyStructObject *self = PyStructObject_CAST(op); | |
| 2397 | + ENSURE_STRUCT_IS_READY(self); | ||
| 2396 | 2398 | PyObject* fmt = PyUnicode_FromStringAndSize( | |
| 2397 | 2399 | PyBytes_AS_STRING(self->s_format), PyBytes_GET_SIZE(self->s_format)); | |
| 2398 | 2400 | if (fmt == NULL) { | |
| Back | FazBrowse Home | New Git URL |
0 commit comments