Mercurial > cpython-lru_cache-weakref
diff Objects/memoryobject.c @ 77213:bc0281f85409
Issue #14930: Make memoryview objects weakrefable.
| author | Richard Oudkerk <shibturn@gmail.com> |
|---|---|
| date | Mon, 28 May 2012 21:35:09 +0100 |
| parents | 9f7d06a9eabe |
| children | 8fbbc7c8748e |
line wrap: on
line diff
--- a/Objects/memoryobject.c Mon May 28 22:23:42 2012 +0200 +++ b/Objects/memoryobject.c Mon May 28 21:35:09 2012 +0100 @@ -595,6 +595,7 @@ mv->view.shape = mv->ob_array; mv->view.strides = mv->ob_array + ndim; mv->view.suboffsets = mv->ob_array + 2 * ndim; + mv->weakreflist = NULL; _PyObject_GC_TRACK(mv); return mv; @@ -969,6 +970,8 @@ _PyObject_GC_UNTRACK(self); (void)_memory_release(self); Py_CLEAR(self->mbuf); + if (self->weakreflist != NULL) + PyObject_ClearWeakRefs((PyObject *) self); PyObject_GC_Del(self); } @@ -2608,7 +2611,7 @@ (traverseproc)memory_traverse, /* tp_traverse */ (inquiry)memory_clear, /* tp_clear */ memory_richcompare, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ + offsetof(PyMemoryViewObject, weakreflist),/* tp_weaklistoffset */ 0, /* tp_iter */ 0, /* tp_iternext */ memory_methods, /* tp_methods */
