Closes #22668: Merge from 3.4. · pythoncapi/cpython@f5324d7 · GitHub
Skip to content

Commit f5324d7

Browse files
committed
Closes python#22668: Merge from 3.4.
2 parents 6d14405 + fa5d6a5 commit f5324d7

5 files changed

Lines changed: 78 additions & 9 deletions

File tree

Doc/whatsnew/3.5.rst

Lines changed: 6 additions & 0 deletions

Include/memoryobject.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,6 @@ typedef struct {
4545
} _PyManagedBufferObject;
4646

4747

48-
/* static storage used for casting between formats */
49-
#define _Py_MEMORYVIEW_MAX_FORMAT 3 /* must be >= 3 */
50-
5148
/* memoryview state flags */
5249
#define _Py_MEMORYVIEW_RELEASED 0x001 /* access to master buffer blocked */
5350
#define _Py_MEMORYVIEW_C 0x002 /* C-contiguous layout */
@@ -62,7 +59,6 @@ typedef struct {
6259
int flags; /* state flags */
6360
Py_ssize_t exports; /* number of buffer re-exports */
6461
Py_buffer view; /* private copy of the exporter's view */
65-
char format[_Py_MEMORYVIEW_MAX_FORMAT]; /* used for casting */
6662
PyObject *weakreflist;
6763
Py_ssize_t ob_array[1]; /* shape, strides, suboffsets */
6864
} PyMemoryViewObject;

Lib/test/test_memoryview.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,25 @@ def test_reversed(self):
360360
self.assertEqual(list(reversed(m)), aslist)
361361
self.assertEqual(list(reversed(m)), list(m[::-1]))
362362

363+
def test_issue22668(self):
364+
m = memoryview(bytes(range(8)))
365+
b = m.cast('H')
366+
c = b[0:2]
367+
d = memoryview(b)
368+
369+
del b
370+
371+
self.assertEqual(c[0], 256)
372+
self.assertEqual(d[0], 256)
373+
self.assertEqual(c.format, "H")
374+
self.assertEqual(d.format, "H")
375+
376+
_ = m.cast('I')
377+
self.assertEqual(c[0], 256)
378+
self.assertEqual(d[0], 256)
379+
self.assertEqual(c.format, "H")
380+
self.assertEqual(d.format, "H")
381+
363382

364383
# Variations on source objects for the buffer: bytes-like objects, then arrays
365384
# with itemsize > 1.

Lib/test/test_sys.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -965,7 +965,7 @@ def get_gen(): yield 1
965965
check(int(PyLong_BASE**2-1), vsize('') + 2*self.longdigit)
966966
check(int(PyLong_BASE**2), vsize('') + 3*self.longdigit)
967967
# memoryview
968-
check(memoryview(b''), size('Pnin 2P2n2i5P 3cPn'))
968+
check(memoryview(b''), size('Pnin 2P2n2i5P Pn'))
969969
# module
970970
check(unittest, size('PnPPP'))
971971
# None

Objects/memoryobject.c

Lines changed: 52 additions & 4 deletions

0 commit comments

Comments
 (0)