compile(source='pass', filename='?', mode='exec')
compile(dont_inherit=0, filename='tmp', source='0', mode='eval')
compile('pass', '?', dont_inherit=1, mode='exec')
+ compile(memoryview(b"text"), "name", "exec")
self.assertRaises(TypeError, compile)
self.assertRaises(ValueError, compile, 'print(42)\n', '<string>', 'badmode')
self.assertRaises(ValueError, compile, 'print(42)\n', '<string>', 'single', 0xff)
Core and Builtins
-----------------
+- Issue #3946: PyObject_CheckReadBuffer crashed on a memoryview object.
+
- Issue #1688: On Windows, the input() prompt was not correctly displayed if it
contains non-ascii characters.
PyObject_CheckReadBuffer(PyObject *obj)
{
PyBufferProcs *pb = obj->ob_type->tp_as_buffer;
+ Py_buffer view;
if (pb == NULL ||
pb->bf_getbuffer == NULL)
return 0;
- if ((*pb->bf_getbuffer)(obj, NULL, PyBUF_SIMPLE) == -1) {
+ if ((*pb->bf_getbuffer)(obj, &view, PyBUF_SIMPLE) == -1) {
PyErr_Clear();
return 0;
}
- if (*pb->bf_releasebuffer != NULL)
- (*pb->bf_releasebuffer)(obj, NULL);
+ PyBuffer_Release(&view);
return 1;
}