Skip to content

Commit d923fdf

Browse files
GH-92804: Fix memory leak in memoryview iterator (gh-92805)
1 parent 2e8f721 commit d923fdf

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix memory leak in ``memoryview`` iterator as it was not finalized at exit. Patch by Kumar Aditya.

Objects/memoryobject.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3156,7 +3156,7 @@ static PyMethodDef memory_methods[] = {
31563156
/* Memoryview Iterator */
31573157
/**************************************************************************/
31583158

3159-
static PyTypeObject PyMemoryIter_Type;
3159+
PyTypeObject _PyMemoryIter_Type;
31603160

31613161
typedef struct {
31623162
PyObject_HEAD
@@ -3233,7 +3233,7 @@ memory_iter(PyObject *seq)
32333233
}
32343234

32353235
memoryiterobject *it;
3236-
it = PyObject_GC_New(memoryiterobject, &PyMemoryIter_Type);
3236+
it = PyObject_GC_New(memoryiterobject, &_PyMemoryIter_Type);
32373237
if (it == NULL) {
32383238
return NULL;
32393239
}
@@ -3246,7 +3246,7 @@ memory_iter(PyObject *seq)
32463246
return (PyObject *)it;
32473247
}
32483248

3249-
static PyTypeObject PyMemoryIter_Type = {
3249+
PyTypeObject _PyMemoryIter_Type = {
32503250
PyVarObject_HEAD_INIT(&PyType_Type, 0)
32513251
.tp_name = "memory_iterator",
32523252
.tp_basicsize = sizeof(memoryiterobject),

Objects/object.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1845,6 +1845,7 @@ _PyTypes_InitState(PyInterpreterState *interp)
18451845
extern PyTypeObject PyHKEY_Type;
18461846
#endif
18471847
extern PyTypeObject _Py_GenericAliasIterType;
1848+
extern PyTypeObject _PyMemoryIter_Type;
18481849

18491850
static PyTypeObject* static_types[] = {
18501851
// The two most important base types: must be initialized first and
@@ -1944,6 +1945,7 @@ static PyTypeObject* static_types[] = {
19441945
&_PyHamt_Type,
19451946
&_PyInterpreterID_Type,
19461947
&_PyManagedBuffer_Type,
1948+
&_PyMemoryIter_Type,
19471949
&_PyMethodWrapper_Type,
19481950
&_PyNamespace_Type,
19491951
&_PyNone_Type,

0 commit comments

Comments
 (0)