@@ -705,10 +705,7 @@ PyObject *PyCodec_ReplaceErrors(PyObject *exc)
705705    Py_ssize_t  start , end ;
706706
707707    if  (PyObject_TypeCheck (exc , (PyTypeObject  * )PyExc_UnicodeEncodeError )) {
708-         if  (PyUnicodeEncodeError_GetStart (exc , & start ) <  0 ) {
709-             return  NULL ;
710-         }
711-         if  (PyUnicodeEncodeError_GetEnd (exc , & end ) <  0 ) {
708+         if  (_PyUnicodeError_GetParams (exc , NULL , NULL , & start , & end , true) <  0 ) {
712709            return  NULL ;
713710        }
714711        if  (end  <= start ) {
@@ -726,18 +723,16 @@ PyObject *PyCodec_ReplaceErrors(PyObject *exc)
726723        return  Py_BuildValue ("(Nn)" , res , end );
727724    }
728725    else  if  (PyObject_TypeCheck (exc , (PyTypeObject  * )PyExc_UnicodeDecodeError )) {
729-         if  (PyUnicodeDecodeError_GetEnd (exc , & end ) <  0 ) {
726+         // _PyUnicodeError_GetParams() is slightly faster than the public getter 
727+         if  (_PyUnicodeError_GetParams (exc , NULL , NULL , NULL , & end , true) <  0 ) {
730728            return  NULL ;
731729        }
732730        return  Py_BuildValue ("(Cn)" ,
733731                             (int )Py_UNICODE_REPLACEMENT_CHARACTER ,
734732                             end );
735733    }
736734    else  if  (PyObject_TypeCheck (exc , (PyTypeObject  * )PyExc_UnicodeTranslateError )) {
737-         if  (PyUnicodeTranslateError_GetStart (exc , & start ) <  0 ) {
738-             return  NULL ;
739-         }
740-         if  (PyUnicodeTranslateError_GetEnd (exc , & end ) <  0 ) {
735+         if  (_PyUnicodeError_GetParams (exc , NULL , NULL , & start , & end , false) <  0 ) {
741736            return  NULL ;
742737        }
743738        if  (end  <= start ) {
0 commit comments