@@ -1240,20 +1240,18 @@ tuplewriter_free(PyTupleWriter *writer)
12401240
12411241
12421242static int
1243- _PyTupleWriter_SetSize (PyTupleWriter * writer , size_t size , int resize )
1243+ _PyTupleWriter_SetSize (PyTupleWriter * writer , size_t size )
12441244{
12451245 assert (size >= 1 );
12461246
1247+ size += (size >> 1 ); // Over-allocate by 50%
1248+
12471249 if (size > (size_t )PY_SSIZE_T_MAX ) {
12481250 /* Check for overflow */
12491251 PyErr_NoMemory ();
12501252 return -1 ;
12511253 }
12521254
1253- if (resize ) {
1254- size += (size >> 2 ); // Over-allocate by 25%
1255- }
1256-
12571255 if (writer -> tuple != NULL ) {
12581256 if (_PyTuple_ResizeNoTrack (& writer -> tuple , (Py_ssize_t )size ) < 0 ) {
12591257 return -1 ;
@@ -1265,7 +1263,7 @@ _PyTupleWriter_SetSize(PyTupleWriter *writer, size_t size, int resize)
12651263 return -1 ;
12661264 }
12671265
1268- if (resize && writer -> size > 0 ) {
1266+ if (writer -> size > 0 ) {
12691267 memcpy (_PyTuple_ITEMS (writer -> tuple ),
12701268 writer -> small_tuple ,
12711269 writer -> size * sizeof (writer -> small_tuple [0 ]));
@@ -1327,7 +1325,7 @@ PyTupleWriter_Add(PyTupleWriter *writer, PyObject *item)
13271325 }
13281326
13291327 if (writer -> size >= writer -> allocated ) {
1330- if (_PyTupleWriter_SetSize (writer , writer -> size + 1 , 1 ) < 0 ) {
1328+ if (_PyTupleWriter_SetSize (writer , writer -> size + 1 ) < 0 ) {
13311329 return -1 ;
13321330 }
13331331 }
@@ -1349,7 +1347,7 @@ PyTupleWriter_AddSteal(PyTupleWriter *writer, PyObject *item)
13491347 }
13501348
13511349 if (writer -> size >= writer -> allocated ) {
1352- if (_PyTupleWriter_SetSize (writer , writer -> size + 1 , 1 ) < 0 ) {
1350+ if (_PyTupleWriter_SetSize (writer , writer -> size + 1 ) < 0 ) {
13531351 Py_DECREF (item );
13541352 return -1 ;
13551353 }
@@ -1372,7 +1370,7 @@ PyTupleWriter_AddArray(PyTupleWriter *writer,
13721370
13731371 if ((writer -> size + (size_t )size ) > writer -> allocated ) {
13741372 if (_PyTupleWriter_SetSize (writer ,
1375- writer -> size + (size_t )size , 1 ) < 0 ) {
1373+ writer -> size + (size_t )size ) < 0 ) {
13761374 return -1 ;
13771375 }
13781376 }
0 commit comments