8000 gh-111178: Fix function signatures in bytearrayobject.c (#124940) · python/cpython@aace0dc · GitHub
[go: up one dir, main page]

Skip to content
Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit aace0dc

Browse files
authored
gh-111178: Fix function signatures in bytearrayobject.c (#124940)
1 parent 6c7d5c6 commit aace0dc

File tree

1 file changed

+73
-48
lines changed

1 file changed

+73
-48
lines changed

Objects/bytearrayobject.c

Lines changed: 73 additions & 48 deletions
2391
Original file line numberDiff line numberDiff line change
@@ -42,24 +42,26 @@ _getbytevalue(PyObject* arg, int *value)
4242
}
4343

4444
static int
45-
bytearray_getbuffer(PyByteArrayObject *obj, Py_buffer *view, int flags)
45+
bytearray_getbuffer(PyObject *self, Py_buffer *view, int flags)
4646
{
47-
void *ptr;
47+
PyByteArrayObject *obj = _PyByteArray_CAST(self);
4848
if (view == NULL) {
4949
PyErr_SetString(PyExc_BufferError,
5050
"bytearray_getbuffer: view==NULL argument is obsolete");
5151
return -1;
5252
}
53-
ptr = (void *) PyByteArray_AS_STRING(obj);
53+
54+
void *ptr = (void *) PyByteArray_AS_STRING(obj);
5455
/* cannot fail if view != NULL and readonly == 0 */
5556
(void)PyBuffer_FillInfo(view, (PyObject*)obj, ptr, Py_SIZE(obj), 0, flags);
5657
obj->ob_exports++;
5758
return 0;
5859
}
5960

6061
static void
61-
bytearray_releasebuffer(PyByteArrayObject *obj, Py_buffer *view)
62+
bytearray_releasebuffer(PyObject *self, Py_buffer *view)
6263
{
64+
PyByteArrayObject *obj = _PyByteArray_CAST(self);
6365
obj->ob_exports--;
6466
assert(obj->ob_exports >= 0);
6567
}
@@ -286,46 +288,53 @@ PyByteArray_Concat(PyObject *a, PyObject *b)
286288
/* Functions stuffed into the type object */
287289

288290
static Py_ssize_t
289-
bytearray_length(PyByteArrayObject *self)
291+
bytearray_length(PyObject *op)
290292
{
293+
PyByteArrayObject *self = _PyByteArray_CAST(op);
291294
return Py_SIZE(self);
292295
}
293296

294297
static PyObject *
295-
bytearray_iconcat(PyByteArrayObject *self, PyObject *other)
298+
bytearray_iconcat(PyObject *op, PyObject *other)
296299
{
297-
Py_ssize_t size;
298-
Py_buffer vo;
300+
PyByteArrayObject *self = _PyByteArray_CAST(op);
299301

302+
Py_buffer vo;
300303
if (PyObject_GetBuffer(other, &vo, PyBUF_SIMPLE) != 0) {
301304
PyErr_Format(PyExc_TypeError, "can't concat %.100s to %.100s",
302305
Py_TYPE(other)->tp_name, Py_TYPE(self)->tp_name);
303306
return NULL;
304307
}
305308

306-
size = Py_SIZE(self);
309+
Py_ssize_t size = Py_SIZE(self);
307310
if (size > PY_SSIZE_T_MAX - vo.len) {
308311
PyBuffer_Release(&vo);
309312
return PyErr_NoMemory();
310313
}
314+
311315
if (PyByteArray_Resize((PyObject *)self, size + vo.len) < 0) {
312316
PyBuffer_Release(&vo);
313317
return NULL;
314318
}
319+
315320
memcpy(PyByteArray_AS_STRING(self) + size, vo.buf, vo.len);
316321
PyBuffer_Release(&vo);
317322
return Py_NewRef(self);
318323
}
319324

320325
static PyObject *
321-
bytearray_repeat(PyByteArrayObject *self, Py_ssize_t count)
326+
bytearray_repeat(PyObject *op, Py_ssize_t count)
322327
{
323-
if (count < 0)
328+
PyByteArrayObject *self = _PyByteArray_CAST(op);
329+
if (count < 0) {
324330
count = 0;
331+
}
325332
const Py_ssize_t mysize = Py_SIZE(self);
326-
if (count > 0 && mysize > PY_SSIZE_T_MAX / count)
333+
if (count > 0 && mysize > PY_SSIZE_T_MAX / count) {
327334
return PyErr_NoMemory();
335+
}
328336
Py_ssize_t size = mysize * count;
337+
329338
PyByteArrayObject* result = (PyByteArrayObject *)PyByteArray_FromStringAndSize(NULL, size);
330339
const char* buf = PyByteArray_AS_STRING(self);
331340
if (result != NULL && size != 0) {
@@ -335,20 +344,24 @@ bytearray_repeat(PyByteArrayObject *self, Py_ssize_t count)
335344
}
336345

337346
static PyObject *
338-
bytearray_irepeat(PyByteArrayObject *self, Py_ssize_t count)
347+
bytearray_irepeat(PyObject *op, Py_ssize_t count)
339348
{
340-
if (count < 0)
349+
PyByteArrayObject *self = _PyByteArray_CAST(op);
350+
if (count < 0) {
341351
count = 0;
352+
}
342353
else if (count == 1) {
343354
return Py_NewRef(self);
344355
}
345356

346357
const Py_ssize_t mysize = Py_SIZE(self);
347-
if (count > 0 && mysize > PY_SSIZE_T_MAX / count)
358+
if (count > 0 && mysize > PY_SSIZE_T_MAX / count) {
348359
return PyErr_NoMemory();
360+
}
349361
const Py_ssize_t size = mysize * count;
350-
if (PyByteArray_Resize((PyObject *)self, size) < 0)
362+
if (PyByteArray_Resize((PyObject *)self, size) < 0) {
351363
return NULL;
364+
}
352365

353366
char* buf = PyByteArray_AS_STRING(self);
354367
_PyBytes_Repeat(buf, size, buf, mysize);
@@ -357,8 +370,9 @@ bytearray_irepeat(PyByteArrayObject *self, Py_ssize_t count)
357370
}
358371

359372
static PyObject *
360-
bytearray_getitem(PyByteArrayObject *self, Py_ssize_t i)
373+
bytearray_getitem(PyObject *op, Py_ssize_t i)
361374
{
375+
PyByteArrayObject *self = _PyByteArray_CAST(op);
362376
if (i < 0 || i >= Py_SIZE(self)) {
363377
PyErr_SetString(PyExc_IndexError, "bytearray index out of range");
364378
return NULL;
@@ -367,8 +381,9 @@ bytearray_getitem(PyByteArrayObject *self, Py_ssize_t i)
367381
}
368382

369383
static PyObject *
370-
bytearray_subscript(PyByteArrayObject *self, PyObject *index)
384+
bytearray_subscript(PyObject *op, PyObject *index)
371385
{
386+
PyByteArrayObject *self = _PyByteArray_CAST(op);
372387
if (_PyIndex_Check(index)) {
373388
Py_ssize_t i = PyNumber_AsSsize_t(index, PyExc_IndexError);
374389

@@ -559,12 +574,13 @@ bytearray_setslice(PyByteArrayObject *self, Py_ssize_t lo, Py_ssize_t hi,
559574
}
560575

561576
static int
562-
bytearray_setitem(PyByteArrayObject *self, Py_ssize_t i, PyObject *value)
577+
bytearray_setitem(PyObject *op, Py_ssize_t i, PyObject *value)
563578
{
564-
int ival = -1;
579+
PyByteArrayObject *self = _PyByteArray_CAST(op);
565580

566581
// GH-91153: We need to do this *before* the size check, in case value has a
567582
// nasty __index__ method that changes the size of the bytearray:
583+
int ival = -1;
568584
if (value && !_getbytevalue(value, &ival)) {
569585
return -1;
570586
}
@@ -588,11 +604,11 @@ bytearray_setitem(PyByteArrayObject *self, Py_ssize_t i, PyObject *value)
588604
}
589605

590606
static int
591-
bytearray_ass_subscript(PyByteArrayObject *self, PyObject *index, PyObject *values)
607+
bytearray_ass_subscript(PyObject *op, PyObject *index, PyObject *values)
592608
{
593-
Py_ssize_t start, stop, step, slicelen, needed;
594-
char *buf, *bytes;
595-
buf = PyByteArray_AS_STRING(self);
609+
PyByteArrayObject *self = _PyByteArray_CAST(op);
610+
Py_ssize_t start, stop, step, slicelen;
611+
char *buf = PyByteArray_AS_STRING(self);
596612

597613
if (_PyIndex_Check(index)) {
598614
Py_ssize_t i = PyNumber_AsSsize_t(index, PyExc_IndexError);
@@ -645,6 +661,8 @@ bytearray_ass_subscript(PyByteArrayObject *self, PyObject *index, PyObject *valu
645661
return -1;
646662
}
647663

664+
char *bytes;
665+
Py_ssize_t needed;
648666
if (values == NULL) {
649667
bytes = NULL;
650668
needed = 0;
@@ -661,7 +679,7 @@ bytearray_ass_subscript(PyByteArrayObject *self, PyObject *index, PyObject *valu
661679
values = PyByteArray_FromObject(values);
662680
if (values == NULL)
663681
return -1;
664-
err = bytearray_ass_subscript(self, index, values);
682+
err = bytearray_ass_subscript((PyObject*)self, index, values);
665683
Py_DECREF(values);
666684
return err;
667685
}
@@ -670,10 +688,14 @@ bytearray_ass_subscript(PyByteArrayObject *self, PyObject *index, PyObject *valu
670688
bytes = PyByteArray_AS_STRING(values);
671689
needed = Py_SIZE(values);
672690
}
691+
673692
/* Make sure b[5:2] = ... inserts before 5, not before 2. */
674693
if ((step < 0 && start < stop) ||
675694
(step > 0 && start > stop))
695+
{
676696
stop = start;
697+
}
698+
677699
if (step == 1) {
678700
return bytearray_setslice_linear(self, start, stop, bytes, needed);
679701
}
@@ -785,7 +807,7 @@ bytearray___init___impl(PyByteArrayObject *self, PyObject *arg,
785807
if (encoded == NULL)
786808
return -1;
787809
assert(PyBytes_Check(encoded));
788-
new = bytearray_iconcat(self, encoded);
810+
new = bytearray_iconcat((PyObject*)self, encoded);
789811
Py_DECREF(encoded);
790812
if (new == NULL)
791813
return -1;
@@ -926,8 +948,9 @@ bytearray___init___impl(PyByteArrayObject *self, PyObject *arg,
926948
/* Mostly copied from string_repr, but without the
927949
"smart quote" functionality. */
928950
static PyObject *
929-
bytearray_repr(PyByteArrayObject *self)
951+
bytearray_repr(PyObject *op)
930952
{
953+
PyByteArrayObject *self = _PyByteArray_CAST(op);
931954
const char *className = _PyType_Name(Py_TYPE(self));
932955
const char *quote_prefix = "(b";
933956
const char *quote_postfix = ")";
@@ -1021,7 +1044,7 @@ bytearray_str(PyObject *op)
10211044
return NULL;
10221045
}
10231046
}
1024-
return bytearray_repr((PyByteArrayObject*)op);
1047+
return bytearray_repr(op);
10251048
}
10261049

10271050
static PyObject *
@@ -1080,8 +1103,9 @@ bytearray_richcompare(PyObject *self, PyObject *other, int op)
10801103
}
10811104

10821105
static void
1083-
bytearray_dealloc(PyByteArrayObject *self)
1106+
bytearray_dealloc(PyObject *op)
10841107
{
1108+
PyByteArrayObject *self = _PyByteArray_CAST(op);
10851109
if (self->ob_exports > 0) {
10861110
PyErr_SetString(PyExc_SystemError,
10871111
"deallocated bytearray object has exported buffers");
@@ -1244,7 +1268,9 @@ bytearray_rindex_impl(PyByteArrayObject *self, PyObject *sub,
12441268
static int
12451269
bytearray_contains(PyObject *self, PyObject *arg)
12461270
{
1247-
return _Py_bytes_contains(PyByteArray_AS_STRING(self), PyByteArray_GET_SIZE(self), arg);
1271+
return _Py_bytes_contains(PyByteArray_AS_STRING(self),
1272+
PyByteArray_GET_SIZE(self),
1273+
arg);
12481274
}
12491275

12501276
/*[clinic input]
@@ -2262,31 +2288,30 @@ bytearray_sizeof_impl(PyByteArrayObject *self)
22622288
}
22632289

22642290
static PySequenceMethods bytearray_as_sequence = {
2265-
(lenfunc)bytearray_length, /* sq_length */
2266-
(binaryfunc)PyByteArray_Concat, /* sq_concat */
2267-
(ssizeargfunc)bytearray_repeat, /* sq_repeat */
2268-
(ssizeargfunc)bytearray_getitem, /* sq_item */
2291+
bytearray_length, /* sq_length */
2292+
PyByteArray_Concat, /* sq_concat */
2293+
bytearray_repeat, /* sq_repeat */
2294+
bytearray_getitem, /* sq_item */
22692295
0, /* sq_slice */
2270-
(ssizeobjargproc)bytearray_setitem, /* sq_ass_item */
2296+
bytearray_setitem, /* sq_ass_item */
22712297
0, /* sq_ass_slice */
2272-
(objobjproc)bytearray_contains, /* sq_contains */
2273-
(binaryfunc)bytearray_iconcat, /* sq_inplace_concat */
2274-
(ssizeargfunc)bytearray_irepeat, /* sq_inplace_repeat */
2298+
bytearray_contains, /* sq_contains */
2299+
bytearray_iconcat, /* sq_inplace_concat */
2300+
bytearray_irepeat, /* sq_inplace_repeat */
22752301
};
22762302

22772303
static PyMappingMethods bytearray_as_mapping = {
2278-
(lenfunc)bytearray_length,
2279-
(binaryfunc)bytearray_subscript,
2280-
(objobjargproc)bytearray_ass_subscript,
2304+
bytearray_length,
2305+
bytearray_subscript,
2306+
bytearray_ass_subscript,
22812307
};
22822308

22832309
static PyBufferProcs bytearray_as_buffer = {
2284-
(getbufferproc)bytearray_getbuffer,
2285-
(releasebufferproc)bytearray_releasebuffer,
2310+
bytearray_getbuffer,
2311+
bytearray_releasebuffer,
22862312
};
22872313

2288-
static PyMethodDef
2289-
bytearray_methods[] = {
2314+
static PyMethodDef bytearray_methods[] = {
22902315
{"__alloc__", (PyCFunction)bytearray_alloc, METH_NOARGS, alloc_doc},
22912316
BYTEARRAY_REDUCE_METHODDEF
22922317
BYTEARRAY_REDUCE_EX_METHODDEF
@@ -2391,12 +2416,12 @@ PyTypeObject PyByteArray_Type = {
2416
"bytearray",
23922417
sizeof(PyByteArrayObject),
23932418
0,
2394-
(destructor)bytearray_dealloc, /* tp_dealloc */
2419+
bytearray_dealloc, /* tp_dealloc */
23952420
0, /* tp_vectorcall_offset */
23962421
0, /* tp_getattr */
23972422
0, /* tp_setattr */
23982423
0, /* tp_as_async */
2399-
(reprfunc)bytearray_repr, /* tp_repr */
2424+
bytearray_repr, /* tp_repr */
24002425
&bytearray_as_number, /* tp_as_number */
24012426
&bytearray_as_sequence, /* tp_as_sequence */
24022427
&bytearray_as_mapping, /* tp_as_mapping */
@@ -2411,7 +2436,7 @@ PyTypeObject PyByteArray_Type = {
24112436
bytearray_doc, /* tp_doc */
24122437
0, /* tp_traverse */
24132438
0, /* tp_clear */
2414-
(richcmpfunc)bytearray_richcompare, /* tp_richcompare */
2439+
bytearray_richcompare, /* tp_richcompare */
24152440
0, /* tp_weaklistoffset */
24162441
bytearray_iter, /* tp_iter */
24172442
0, /* tp_iternext */

0 commit comments

Comments
 (0)
0