@@ -353,6 +353,13 @@ _build_rval_index_tuple(PyObject *rval, Py_ssize_t idx) {
353353    return  tpl ;
354354}
355355
356+ static  inline  int 
357+ _PyUnicodeWriter_IsEmpty (PyUnicodeWriter  * writer_pub )
358+ {
359+     _PyUnicodeWriter  * writer  =  (_PyUnicodeWriter * )writer_pub ;
360+     return  (writer -> pos  ==  0 );
361+ }
362+ 
356363static  PyObject  * 
357364scanstring_unicode (PyObject  * pystr , Py_ssize_t  end , int  strict , Py_ssize_t  * next_end_ptr )
358365{
@@ -371,9 +378,10 @@ scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict, Py_ssize_t *next
371378    const  void  * buf ;
372379    int  kind ;
373380
374-     _PyUnicodeWriter  writer ;
375-     _PyUnicodeWriter_Init (& writer );
376-     writer .overallocate  =  1 ;
381+     PyUnicodeWriter  * writer  =  PyUnicodeWriter_Create (0 );
382+     if  (writer  ==  NULL ) {
383+         goto bail ;
384+     }
377385
378386    len  =  PyUnicode_GET_LENGTH (pystr );
379387    buf  =  PyUnicode_DATA (pystr );
@@ -404,7 +412,7 @@ scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict, Py_ssize_t *next
404412
405413        if  (c  ==  '"' ) {
406414            // Fast path for simple case. 
407-             if  (writer . buffer   ==   NULL ) {
415+             if  (_PyUnicodeWriter_IsEmpty ( writer ) ) {
408416                PyObject  * ret  =  PyUnicode_Substring (pystr , end , next );
409417                if  (ret  ==  NULL ) {
410418                    goto bail ;
@@ -420,7 +428,7 @@ scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict, Py_ssize_t *next
420428
421429        /* Pick up this chunk if it's not zero length */ 
422430        if  (next  !=  end ) {
423-             if  (_PyUnicodeWriter_WriteSubstring ( & writer , pystr , end , next ) <  0 ) {
431+             if  (PyUnicodeWriter_WriteSubstring ( writer , pystr , end , next ) <  0 ) {
424432                goto bail ;
425433            }
426434        }
@@ -511,18 +519,18 @@ scanstring_unicode(PyObject *pystr, Py_ssize_t end, int strict, Py_ssize_t *next
511519                    end  -=  6 ;
512520            }
513521        }
514-         if  (_PyUnicodeWriter_WriteChar ( & writer , c ) <  0 ) {
522+         if  (PyUnicodeWriter_WriteChar ( writer , c ) <  0 ) {
515523            goto bail ;
516524        }
517525    }
518526
519-     rval  =  _PyUnicodeWriter_Finish ( & writer );
527+     rval  =  PyUnicodeWriter_Finish ( writer );
520528    * next_end_ptr  =  end ;
521529    return  rval ;
522530
523531bail :
524532    * next_end_ptr  =  -1 ;
525-     _PyUnicodeWriter_Dealloc ( & writer );
533+     PyUnicodeWriter_Discard ( writer );
526534    return  NULL ;
527535}
528536
0 commit comments