@@ -692,13 +692,11 @@ binascii_a2b_ascii85_impl(PyObject *module, Py_buffer *data, int fold_spaces,
692692/*[clinic end generated code: output=6ab30f2a26d301a1 input=11c60c016d4f334b]*/
693693{
694694 const unsigned char * ascii_data , * ignore_data ;
695- unsigned char * bin_data ;
696695 int group_pos = 0 ;
697696 unsigned char this_ch , this_digit ;
698697 unsigned char ignore_map [256 ] = {0 };
699698 uint32_t leftchar = 0 ;
700699 Py_ssize_t ascii_len , bin_len , chunk_len , ignore_len ;
701- _PyBytesWriter writer ;
702700 binascii_state * state ;
703701
704702 ascii_data = data -> buf ;
@@ -737,8 +735,11 @@ binascii_a2b_ascii85_impl(PyObject *module, Py_buffer *data, int fold_spaces,
737735 }
738736 bin_len = 4 * ((bin_len + 4 ) / 5 );
739737
740- _PyBytesWriter_Init (& writer );
741- bin_data = _PyBytesWriter_Alloc (& writer , bin_len );
738+ PyBytesWriter * writer = PyBytesWriter_Create (bin_len );
739+ if (writer == NULL ) {
740+ return NULL ;
741+ }
742+ unsigned char * bin_data = PyBytesWriter_GetData (writer );
742743 if (bin_data == NULL ) {
743744 return NULL ;
744745 }
@@ -808,10 +809,10 @@ binascii_a2b_ascii85_impl(PyObject *module, Py_buffer *data, int fold_spaces,
808809 leftchar = 0 ;
809810 }
810811
811- return _PyBytesWriter_Finish ( & writer , bin_data );
812+ return PyBytesWriter_FinishWithPointer ( writer , bin_data );
812813
813814error_end :
814- _PyBytesWriter_Dealloc ( & writer );
815+ PyBytesWriter_Discard ( writer );
815816 return NULL ;
816817}
817818
@@ -838,14 +839,12 @@ binascii_b2a_ascii85_impl(PyObject *module, Py_buffer *data, int fold_spaces,
838839 int wrap , unsigned int width , int pad )
839840/*[clinic end generated code: output=78426392ad3fc75b input=d5122dbab4dbb9f2]*/
840841{
841- unsigned char * ascii_data ;
842842 const unsigned char * bin_data ;
843843 int chunk_pos = 0 ;
844844 unsigned char this_group [5 ];
845845 uint32_t leftchar = 0 ;
846846 unsigned int line_len = 0 ;
847847 Py_ssize_t bin_len , group_len , out_len ;
848- _PyBytesWriter writer ;
849848
850849 bin_data = data -> buf ;
851850 bin_len = data -> len ;
@@ -864,11 +863,11 @@ binascii_b2a_ascii85_impl(PyObject *module, Py_buffer *data, int fold_spaces,
864863 if (!pad && (bin_len % 4 )) out_len -= 4 - (bin_len % 4 );
865864 if (width && out_len ) out_len += (out_len - 1 ) / width ;
866865
867- _PyBytesWriter_Init (& writer );
868- ascii_data = _PyBytesWriter_Alloc (& writer , out_len );
869- if (ascii_data == NULL ) {
866+ PyBytesWriter * writer = PyBytesWriter_Create (out_len );
867+ if (writer == NULL ) {
870868 return NULL ;
871869 }
870+ unsigned char * ascii_data = PyBytesWriter_GetData (writer );
872871
873872 if (wrap ) {
874873 * ascii_data ++ = BASE85_A85_PREFIX ;
@@ -923,7 +922,7 @@ binascii_b2a_ascii85_impl(PyObject *module, Py_buffer *data, int fold_spaces,
923922 * ascii_data ++ = BASE85_A85_SUFFIX ;
924923 }
925924
926- return _PyBytesWriter_Finish ( & writer , ascii_data );
925+ return PyBytesWriter_FinishWithPointer ( writer , ascii_data );
927926}
928927
929928/*[clinic input]
@@ -948,12 +947,10 @@ binascii_a2b_base85_impl(PyObject *module, Py_buffer *data, int strict_mode,
948947/*[clinic end generated code: output=c5b9118ffe77f1cb input=65c2a532ad64ebd5]*/
949948{
950949 const unsigned char * ascii_data , * table_a2b ;
951- unsigned char * bin_data ;
952950 int group_pos = 0 ;
953951 unsigned char this_ch , this_digit ;
954952 uint32_t leftchar = 0 ;
955953 Py_ssize_t ascii_len , bin_len , chunk_len ;
956- _PyBytesWriter writer ;
957954 binascii_state * state ;
958955
959956 table_a2b = z85 ? table_a2b_base85_z85 : table_a2b_base85 ;
@@ -965,11 +962,11 @@ binascii_a2b_base85_impl(PyObject *module, Py_buffer *data, int strict_mode,
965962 /* Allocate output buffer. */
966963 bin_len = 4 * ((ascii_len + 4 ) / 5 );
967964
968- _PyBytesWriter_Init (& writer );
969- bin_data = _PyBytesWriter_Alloc (& writer , bin_len );
970- if (bin_data == NULL ) {
965+ PyBytesWriter * writer = PyBytesWriter_Create (bin_len );
966+ if (writer == NULL ) {
971967 return NULL ;
972968 }
969+ unsigned char * bin_data = PyBytesWriter_GetData (writer );
973970
974971 for (; ascii_len > 0 || group_pos != 0 ; ascii_len -- , ascii_data ++ ) {
975972 /* Shift (in radix-85) data or padding into our buffer. */
@@ -1018,10 +1015,10 @@ binascii_a2b_base85_impl(PyObject *module, Py_buffer *data, int strict_mode,
10181015 leftchar = 0 ;
10191016 }
10201017
1021- return _PyBytesWriter_Finish ( & writer , bin_data );
1018+ return PyBytesWriter_FinishWithPointer ( writer , bin_data );
10221019
10231020error_end :
1024- _PyBytesWriter_Dealloc ( & writer );
1021+ PyBytesWriter_Discard ( writer );
10251022 return NULL ;
10261023}
10271024
@@ -1046,11 +1043,9 @@ binascii_b2a_base85_impl(PyObject *module, Py_buffer *data, int pad,
10461043 int newline , int z85 )
10471044/*[clinic end generated code: output=d3740e9a20c8e071 input=e4e07591f7a11ae4]*/
10481045{
1049- unsigned char * ascii_data ;
10501046 const unsigned char * bin_data , * table_b2a ;
10511047 uint32_t leftchar = 0 ;
10521048 Py_ssize_t bin_len , group_len , out_len ;
1053- _PyBytesWriter writer ;
10541049
10551050 table_b2a = z85 ? table_b2a_base85_z85 : table_b2a_base85 ;
10561051 bin_data = data -> buf ;
@@ -1063,11 +1058,11 @@ binascii_b2a_base85_impl(PyObject *module, Py_buffer *data, int pad,
10631058 if (!pad && (bin_len % 4 )) out_len -= 4 - (bin_len % 4 );
10641059 if (newline ) out_len ++ ;
10651060
1066- _PyBytesWriter_Init (& writer );
1067- ascii_data = _PyBytesWriter_Alloc (& writer , out_len );
1068- if (ascii_data == NULL ) {
1061+ PyBytesWriter * writer = PyBytesWriter_Create (out_len );
1062+ if (writer == NULL ) {
10691063 return NULL ;
10701064 }
1065+ unsigned char * ascii_data = PyBytesWriter_GetData (writer );
10711066
10721067 /* Encode all full-length chunks. */
10731068 for (; bin_len >= 4 ; bin_len -= 4 , bin_data += 4 ) {
@@ -1109,7 +1104,7 @@ binascii_b2a_base85_impl(PyObject *module, Py_buffer *data, int pad,
11091104 * ascii_data ++ = '\n' ;
11101105 }
11111106
1112- return _PyBytesWriter_Finish ( & writer , ascii_data );
1107+ return PyBytesWriter_FinishWithPointer ( writer , ascii_data );
11131108}
11141109
11151110/*[clinic input]
0 commit comments