zipimport: catch _PyUnicode_AsString() failure in get_code_from_data()

It occurs if the path contains surrogates.
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index d1c939f..efe6972 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -1119,6 +1119,10 @@
         return NULL;
 
     modpath = _PyUnicode_AsString(PyTuple_GetItem(toc_entry, 0));
+    if (modpath == NULL) {
+        Py_DECREF(data);
+        return NULL;
+    }
 
     if (isbytecode) {
         code = unmarshal_code(modpath, data, mtime);