Skip to content

Commit 7cb444b

Browse files
committed
Remove PyBytesWriter_GetAllocated()
1 parent e582385 commit 7cb444b

File tree

3 files changed

+10
-23
lines changed

3 files changed

+10
-23
lines changed

Doc/c-api/bytes.rst

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,3 @@ PyBytesWriter
291291
It is the difference between total allocated bytes (bytes allocated by
292292
:c:func:`PyBytesWriter_Create` and :c:func:`PyBytesWriter_Extend`) and the
293293
current position in the buffer.
294-
295-
.. c:function:: Py_ssize_t PyBytesWriter_GetAllocated(PyBytesWriter *writer)
296-
297-
Get the number of allocated bytes.

Include/cpython/bytesobject.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,6 @@ PyAPI_FUNC(PyObject*) PyBytesWriter_Finish(
5858
PyAPI_FUNC(Py_ssize_t) PyBytesWriter_GetRemaining(
5959
PyBytesWriter *writer,
6060
void *buf);
61-
PyAPI_FUNC(Py_ssize_t) PyBytesWriter_GetAllocated(
62-
PyBytesWriter *writer);
6361
PyAPI_FUNC(void*) PyBytesWriter_Extend(
6462
PyBytesWriter *writer,
6563
void *buf,

Objects/bytesobject.c

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2833,6 +2833,7 @@ _PyBytes_FromList(PyObject *x)
28332833
return NULL;
28342834
}
28352835

2836+
Py_ssize_t extend = 1;
28362837
for (Py_ssize_t i = 0; i < PyList_GET_SIZE(x); i++) {
28372838
PyObject *item = PyList_GET_ITEM(x, i);
28382839
Py_INCREF(item);
@@ -2849,12 +2850,15 @@ _PyBytes_FromList(PyObject *x)
28492850

28502851
if (i >= size) {
28512852
// The list was extended by a previous PyNumber_AsSsize_t() call
2852-
Py_ssize_t extend = PyBytesWriter_GetAllocated(writer) - size + 1;
28532853
str = PyBytesWriter_Extend(writer, str, extend);
28542854
if (str == NULL) {
28552855
goto error;
28562856
}
28572857
size += extend;
2858+
2859+
if (extend <= PY_SSIZE_T_MAX / 2) {
2860+
extend *= 2;
2861+
}
28582862
}
28592863
*str++ = (char) value;
28602864
}
@@ -2910,6 +2914,7 @@ _PyBytes_FromIterator(PyObject *it, PyObject *x)
29102914
}
29112915

29122916
/* Run the iterator to exhaustion */
2917+
Py_ssize_t extend = 1;
29132918
for (Py_ssize_t i = 0; ; i++) {
29142919
PyObject *item;
29152920
Py_ssize_t value;
@@ -2938,12 +2943,15 @@ _PyBytes_FromIterator(PyObject *it, PyObject *x)
29382943
/* Append the byte */
29392944
if (i >= size) {
29402945
// The list was extended by a previous PyNumber_AsSsize_t() call
2941-
Py_ssize_t extend = PyBytesWriter_GetAllocated(writer) - size + 1;
29422946
str = PyBytesWriter_Extend(writer, str, extend);
29432947
if (str == NULL) {
29442948
goto error;
29452949
}
29462950
size += extend;
2951+
2952+
if (extend <= PY_SSIZE_T_MAX / 2) {
2953+
extend *= 2;
2954+
}
29472955
}
29482956
*str++ = (char) value;
29492957
}
@@ -3643,21 +3651,6 @@ PyBytesWriter_GetRemaining(PyBytesWriter *writer, void *buf)
36433651
}
36443652

36453653

3646-
Py_ssize_t
3647-
PyBytesWriter_GetAllocated(PyBytesWriter *writer)
3648-
{
3649-
if (writer->obj == NULL) {
3650-
return sizeof(writer->small_buffer);
3651-
}
3652-
else if (writer->use_bytearray) {
3653-
return PyByteArray_GET_SIZE(writer->obj);
3654-
}
3655-
else {
3656-
return PyBytes_GET_SIZE(writer->obj);
3657-
}
3658-
}
3659-
3660-
36613654
void*
36623655
PyBytesWriter_Extend(PyBytesWriter *writer, void *buf, Py_ssize_t extend)
36633656
{

0 commit comments

Comments
 (0)