#include "parts.h" #include "util.h" /* Test _PyBytes_Resize() */ static PyObject * bytes_resize(PyObject *Py_UNUSED(module), PyObject *args) { PyObject *obj; Py_ssize_t newsize; int new; if (!PyArg_ParseTuple(args, "Onp", &obj, &newsize, &new)) return NULL; NULLABLE(obj); if (new) { assert(obj != NULL); assert(PyBytes_CheckExact(obj)); PyObject *newobj = PyBytes_FromStringAndSize(NULL, PyBytes_Size(obj)); if (newobj == NULL) { return NULL; } memcpy(PyBytes_AsString(newobj), PyBytes_AsString(obj), PyBytes_Size(obj)); obj = newobj; } else { Py_XINCREF(obj); } if (_PyBytes_Resize(&obj, newsize) < 0) { assert(obj == NULL); } else { assert(obj != NULL); } return obj; } /* Test PyBytes_Join() */ static PyObject * bytes_join(PyObject *Py_UNUSED(module), PyObject *args) { PyObject *sep, *iterable; if (!PyArg_ParseTuple(args, "OO", &sep, &iterable)) { return NULL; } NULLABLE(sep); NULLABLE(iterable); return PyBytes_Join(sep, iterable); } static PyMethodDef test_methods[] = { {"bytes_resize", bytes_resize, METH_VARARGS}, {"bytes_join", bytes_join, METH_VARARGS}, {NULL}, }; int _PyTestCapi_Init_Bytes(PyObject *m) { if (PyModule_AddFunctions(m, test_methods) < 0) { return -1; } return 0; }