Skip to content

Commit 0bdcc84

Browse files
miss-islingtonritvikpashamblurb-it[bot]ZeroIntensityvstinner
authored
[3.12] gh-126341: add release check to __iter__ method of memoryview (GH-126759) (#126779)
gh-126341: add release check to `__iter__` method of `memoryview` (GH-126759) (cherry picked from commit a12690e) Co-authored-by: Ritvik Pasham <ritvikpasham@gmail.com> Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com> Co-authored-by: Peter Bierma <zintensitydev@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org> Co-authored-by: sobolevn <mail@sobolevn.me>
1 parent dd21259 commit 0bdcc84

File tree

3 files changed

+4
-0
lines changed

3 files changed

+4
-0
lines changed

Lib/test/test_buffer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3906,6 +3906,8 @@ def test_memoryview_check_released(self):
39063906
self.assertRaises(ValueError, memoryview, m)
39073907
# memoryview.cast()
39083908
self.assertRaises(ValueError, m.cast, 'c')
3909+
# memoryview.__iter__()
3910+
self.assertRaises(ValueError, m.__iter__)
39093911
# getbuffer()
39103912
self.assertRaises(ValueError, ndarray, m)
39113913
# memoryview.tolist()
Lines changed: 1 addition & 0 deletions
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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3322,6 +3322,7 @@ memory_iter(PyObject *seq)
33223322
PyErr_BadInternalCall();
33233323
return NULL;
33243324
}
3325+
CHECK_RELEASED(seq);
33253326
PyMemoryViewObject *obj = (PyMemoryViewObject *)seq;
33263327
int ndims = obj->view.ndim;
33273328
if (ndims == 0) {

0 commit comments

Comments
 (0)