@@ -241,6 +241,19 @@ import_get_module(PyThreadState *tstate, PyObject *name)
241241 return m ;
242242}
243243
244+ static PyObject *
245+ get_importtime_name (PyObject * name )
246+ {
247+ PyObject * exc = PyErr_GetRaisedException ();
248+ PyObject * encoded = PyUnicode_AsEncodedString (name , "utf-8" ,
249+ "backslashreplace" );
250+ if (encoded == NULL ) {
251+ PyErr_Clear ();
252+ }
253+ PyErr_SetRaisedException (exc );
254+ return encoded ;
255+ }
256+
244257static int
245258import_ensure_initialized (PyInterpreterState * interp , PyObject * mod , PyObject * name )
246259{
@@ -278,8 +291,11 @@ import_ensure_initialized(PyInterpreterState *interp, PyObject *mod, PyObject *n
278291 if (_PyInterpreterState_GetConfig (interp )-> import_time == 2 ) {
279292 _IMPORT_TIME_HEADER (interp );
280293#define import_level FIND_AND_LOAD(interp).import_level
294+ PyObject * encoded_name = get_importtime_name (name );
281295 fprintf (stderr , "import time: cached | cached | %*s\n" ,
282- import_level * 2 , PyUnicode_AsUTF8 (name ));
296+ import_level * 2 ,
297+ encoded_name != NULL ? PyBytes_AS_STRING (encoded_name ) : "?" );
298+ Py_XDECREF (encoded_name );
283299#undef import_level
284300 }
285301
@@ -3782,10 +3798,13 @@ import_find_and_load(PyThreadState *tstate, PyObject *abs_name)
37823798 PyTime_t cum = t2 - t1 ;
37833799
37843800 import_level -- ;
3801+ PyObject * encoded_name = get_importtime_name (abs_name );
37853802 fprintf (stderr , "import time: %9ld | %10ld | %*s%s\n" ,
37863803 (long )_PyTime_AsMicroseconds (cum - accumulated , _PyTime_ROUND_CEILING ),
37873804 (long )_PyTime_AsMicroseconds (cum , _PyTime_ROUND_CEILING ),
3788- import_level * 2 , "" , PyUnicode_AsUTF8 (abs_name ));
3805+ import_level * 2 , "" ,
3806+ encoded_name != NULL ? PyBytes_AS_STRING (encoded_name ) : "?" );
3807+ Py_XDECREF (encoded_name );
37893808
37903809 accumulated = accumulated_copy + cum ;
37913810 }
0 commit comments