Skip to content

Commit a741431

Browse files
ritvikpashamblurb-it[bot]ZeroIntensityvstinnersobolevn
authored andcommitted
pythongh-126341: add release check to __iter__ method of memoryview (pythonGH-126759)
(cherry picked from commit a12690e) Co-authored-by: Ritvik Pasham <[email protected]> Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> Co-authored-by: Peter Bierma <[email protected]> Co-authored-by: Victor Stinner <[email protected]> Co-authored-by: sobolevn <[email protected]>
1 parent e8dbe7e commit a741431

File tree

3 files changed

+4
-0
lines changed

3 files changed

+4
-0
lines changed

Lib/test/test_buffer.py

+2
Original file line numberDiff line numberDiff line change
@@ -3910,6 +3910,8 @@ def test_memoryview_check_released(self):
39103910
self.assertRaises(ValueError, memoryview, m)
39113911
# memoryview.cast()
39123912
self.assertRaises(ValueError, m.cast, 'c')
3913+
# memoryview.__iter__()
3914+
self.assertRaises(ValueError, m.__iter__)
39133915
# getbuffer()
39143916
self.assertRaises(ValueError, ndarray, m)
39153917
# memoryview.tolist()
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Now :exc:`ValueError` is raised instead of :exc:`SystemError` when trying to iterate over a released :class:`memoryview` object.

Objects/memoryobject.c

+1
Original file line numberDiff line numberDiff line change
@@ -3355,6 +3355,7 @@ memory_iter(PyObject *seq)
33553355
PyErr_BadInternalCall();
33563356
return NULL;
33573357
}
3358+
CHECK_RELEASED(seq);
33583359
PyMemoryViewObject *obj = (PyMemoryViewObject *)seq;
33593360
int ndims = obj->view.ndim;
33603361
if (ndims == 0) {

0 commit comments

Comments
 (0)