@@ -13090,6 +13090,7 @@ unicode_maketrans_from_dict(PyObject *x, PyObject *newdict)
1309013090 PyObject * key , * value ;
1309113091 Py_ssize_t i = 0 ;
1309213092 int res ;
13093+ int ret = -1 ; /* assume failure */
1309313094
1309413095 Py_BEGIN_CRITICAL_SECTION (x );
1309513096 while (PyDict_Next (x , & i , & key , & value )) {
@@ -13098,35 +13099,34 @@ unicode_maketrans_from_dict(PyObject *x, PyObject *newdict)
1309813099 int kind ;
1309913100 const void * data ;
1310013101 if (PyUnicode_GET_LENGTH (key ) != 1 ) {
13101- PyErr_SetString (PyExc_ValueError , "string keys in translate "
13102+ PyErr_SetString (PyExc_ValueError , "string keys in translate"
1310213103 "table must be of length 1" );
13103- goto error ;
13104+ goto done ;
1310413105 }
1310513106 kind = PyUnicode_KIND (key );
1310613107 data = PyUnicode_DATA (key );
1310713108 newkey = PyLong_FromLong (PyUnicode_READ (kind , data , 0 ));
1310813109 if (!newkey )
13109- goto error ;
13110+ goto done ;
1311013111 res = PyDict_SetItem (newdict , newkey , value );
1311113112 Py_DECREF (newkey );
13112- if (res < 0 )
13113- goto error ;
13113+ if (res < 0 )
13114+ goto done ;
1311413115 }
1311513116 else if (PyLong_Check (key )) {
1311613117 if (PyDict_SetItem (newdict , key , value ) < 0 )
13117- goto error ;
13118+ goto done ;
1311813119 }
1311913120 else {
13120- PyErr_SetString (PyExc_TypeError , "keys in translate table must "
13121+ PyErr_SetString (PyExc_TypeError , "keys in translate table must"
1312113122 "be strings or integers" );
13122- goto error ;
13123+ goto done ;
1312313124 }
1312413125 }
13126+ ret = 0 ;
13127+ done :
1312513128 Py_END_CRITICAL_SECTION ();
13126- return 0 ;
13127- error :
13128- Py_END_CRITICAL_SECTION ();
13129- return -1 ;
13129+ return ret ;
1313013130}
1313113131
1313213132static PyObject *
0 commit comments