@@ -2612,31 +2612,26 @@ save_picklebuffer(PickleState *st, PicklerObject *self, PyObject *obj)
26122612static  PyObject  * 
26132613raw_unicode_escape (PyObject  * obj )
26142614{
2615-     char  * p ;
2616-     Py_ssize_t  i , size ;
2617-     const  void  * data ;
2618-     int  kind ;
2619-     _PyBytesWriter  writer ;
2615+     Py_ssize_t  size  =  PyUnicode_GET_LENGTH (obj );
2616+     const  void  * data  =  PyUnicode_DATA (obj );
2617+     int  kind  =  PyUnicode_KIND (obj );
26202618
2621-     _PyBytesWriter_Init (& writer );
2622- 
2623-     size  =  PyUnicode_GET_LENGTH (obj );
2624-     data  =  PyUnicode_DATA (obj );
2625-     kind  =  PyUnicode_KIND (obj );
2626- 
2627-     p  =  _PyBytesWriter_Alloc (& writer , size );
2628-     if  (p  ==  NULL )
2629-         goto error ;
2630-     writer .overallocate  =  1 ;
2619+     Py_ssize_t  alloc  =  size ;
2620+     PyBytesWriter  * writer  =  PyBytesWriter_Create (alloc );
2621+     if  (writer  ==  NULL ) {
2622+         return  NULL ;
2623+     }
2624+     char  * p  =  PyBytesWriter_GetData (writer );
26312625
2632-     for  (i = 0 ; i  <  size ; i ++ ) {
2626+     for  (Py_ssize_t   i = 0 ; i  <  size ; i ++ ) {
26332627        Py_UCS4  ch  =  PyUnicode_READ (kind , data , i );
26342628        /* Map 32-bit characters to '\Uxxxxxxxx' */ 
26352629        if  (ch  >= 0x10000 ) {
26362630            /* -1: subtract 1 preallocated byte */ 
2637-             p  =  _PyBytesWriter_Prepare ( & writer , p ,  10 - 1 );
2638-             if  (p  ==  NULL )
2631+             p  =  PyBytesWriter_GrowAndUpdatePointer ( writer , 10 - 1 ,  p );
2632+             if  (p  ==  NULL ) { 
26392633                goto error ;
2634+             }
26402635
26412636            * p ++  =  '\\' ;
26422637            * p ++  =  'U' ;
@@ -2655,9 +2650,10 @@ raw_unicode_escape(PyObject *obj)
26552650                 ch  ==  0x1a )
26562651        {
26572652            /* -1: subtract 1 preallocated byte */ 
2658-             p  =  _PyBytesWriter_Prepare ( & writer , p ,  6 - 1 );
2659-             if  (p  ==  NULL )
2653+             p  =  PyBytesWriter_GrowAndUpdatePointer ( writer , 6 - 1 ,  p );
2654+             if  (p  ==  NULL ) { 
26602655                goto error ;
2656+             }
26612657
26622658            * p ++  =  '\\' ;
26632659            * p ++  =  'u' ;
@@ -2671,10 +2667,10 @@ raw_unicode_escape(PyObject *obj)
26712667            * p ++  =  (char ) ch ;
26722668    }
26732669
2674-     return  _PyBytesWriter_Finish ( & writer , p );
2670+     return  PyBytesWriter_FinishWithPointer ( writer , p );
26752671
26762672error :
2677-     _PyBytesWriter_Dealloc ( & writer );
2673+     PyBytesWriter_Discard ( writer );
26782674    return  NULL ;
26792675}
26802676
0 commit comments