Original file line numberDiff line numberDiff line change@@ -1671,17 +1671,17 @@ _textiowrapper_writeflush(textio *self)
16711671 }
16721672else {
16731673assert(PyList_Check(pending));
1674-b=PyBytes_FromStringAndSize(NULL, self->pending_bytes_count);
1675-if (b==NULL) {
1674+PyBytesWriter*writer=PyBytesWriter_Create(self->pending_bytes_count);
1675+if (writer==NULL) {
16761676return-1;
16771677 }
167816781679-char*buf=PyBytes_AsString(b);
1679+char*buf=PyBytesWriter_GetData(writer);
16801680Py_ssize_tpos=0;
1681168116821682for (Py_ssize_ti=0; i<PyList_GET_SIZE(pending); i++) {
16831683PyObject*obj=PyList_GET_ITEM(pending, i);
1684-char*src;
1684+constchar*src;
16851685Py_ssize_tlen;
16861686if (PyUnicode_Check(obj)) {
16871687assert(PyUnicode_IS_ASCII(obj));
@@ -1690,15 +1690,18 @@ _textiowrapper_writeflush(textio *self)
16901690 }
16911691else {
16921692assert(PyBytes_Check(obj));
1693-if (PyBytes_AsStringAndSize(obj, &src, &len) <0) {
1694-Py_DECREF(b);
1695-return-1;
1696- }
1693+src=PyBytes_AS_STRING(obj);
1694+len=PyBytes_GET_SIZE(obj);
16971695 }
16981696memcpy(buf+pos, src, len);
16991697pos+=len;
17001698 }
17011699assert(pos==self->pending_bytes_count);
1700+1701+b=PyBytesWriter_Finish(writer);
1702+if (b==NULL) {
1703+return-1;
1704+ }
17021705 }
1703170617041707self->pending_bytes_count=0;