aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/clinic/import.c.h6
-rw-r--r--Python/clinic/marshal.c.h6
-rw-r--r--Python/getargs.c17
3 files changed, 8 insertions, 21 deletions
diff --git a/Python/clinic/import.c.h b/Python/clinic/import.c.h
index 3ecd2acb1cd..5edeaef656e 100644
--- a/Python/clinic/import.c.h
+++ b/Python/clinic/import.c.h
@@ -605,10 +605,6 @@ _imp_source_hash(PyObject *module, PyObject *const *args, Py_ssize_t nargs, PyOb
if (PyObject_GetBuffer(args[1], &source, PyBUF_SIMPLE) != 0) {
goto exit;
}
- if (!PyBuffer_IsContiguous(&source, 'C')) {
- _PyArg_BadArgument("source_hash", "argument 'source'", "contiguous buffer", args[1]);
- goto exit;
- }
return_value = _imp_source_hash_impl(module, key, &source);
exit:
@@ -627,4 +623,4 @@ exit:
#ifndef _IMP_EXEC_DYNAMIC_METHODDEF
#define _IMP_EXEC_DYNAMIC_METHODDEF
#endif /* !defined(_IMP_EXEC_DYNAMIC_METHODDEF) */
-/*[clinic end generated code: output=c37ad1bf06f9e947 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=dbd63707bd40b07c input=a9049054013a1b77]*/
diff --git a/Python/clinic/marshal.c.h b/Python/clinic/marshal.c.h
index ecde4f6482d..e6b0f1999a4 100644
--- a/Python/clinic/marshal.c.h
+++ b/Python/clinic/marshal.c.h
@@ -143,10 +143,6 @@ marshal_loads(PyObject *module, PyObject *arg)
if (PyObject_GetBuffer(arg, &bytes, PyBUF_SIMPLE) != 0) {
goto exit;
}
- if (!PyBuffer_IsContiguous(&bytes, 'C')) {
- _PyArg_BadArgument("loads", "argument", "contiguous buffer", arg);
- goto exit;
- }
return_value = marshal_loads_impl(module, &bytes);
exit:
@@ -157,4 +153,4 @@ exit:
return return_value;
}
-/*[clinic end generated code: output=99ba446b1a75a269 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=92d2d47aac9128ee input=a9049054013a1b77]*/
diff --git a/Python/getargs.c b/Python/getargs.c
index 80d2540a694..5a12ca8def7 100644
--- a/Python/getargs.c
+++ b/Python/getargs.c
@@ -1187,17 +1187,15 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags,
arg, msgbuf, bufsize);
format++;
- /* Caller is interested in Py_buffer, and the object
- supports it directly. */
+ /* Caller is interested in Py_buffer, and the object supports it
+ directly. The request implicitly asks for PyBUF_SIMPLE, so the
+ result is C-contiguous with format 'B'. */
if (PyObject_GetBuffer(arg, (Py_buffer*)p, PyBUF_WRITABLE) < 0) {
PyErr_Clear();
return converterr("read-write bytes-like object",
arg, msgbuf, bufsize);
}
- if (!PyBuffer_IsContiguous((Py_buffer*)p, 'C')) {
- PyBuffer_Release((Py_buffer*)p);
- return converterr("contiguous buffer", arg, msgbuf, bufsize);
- }
+ assert(PyBuffer_IsContiguous((Py_buffer *)p, 'C'));
if (addcleanup(p, freelist, cleanup_buffer)) {
return converterr(
"(cleanup problem)",
@@ -1242,15 +1240,12 @@ convertbuffer(PyObject *arg, const void **p, const char **errmsg)
static int
getbuffer(PyObject *arg, Py_buffer *view, const char **errmsg)
{
+ /* PyBUF_SIMPLE implies C-contiguous */
if (PyObject_GetBuffer(arg, view, PyBUF_SIMPLE) != 0) {
*errmsg = "bytes-like object";
return -1;
}
- if (!PyBuffer_IsContiguous(view, 'C')) {
- PyBuffer_Release(view);
- *errmsg = "contiguous buffer";
- return -1;
- }
+ assert(PyBuffer_IsContiguous(view, 'C'));
return 0;
}