SF patch# 1766592 by Paul Colomiets.
Fix test_zipimport.
diff --git a/Modules/zipimport.c b/Modules/zipimport.c
index bf913f3..fc93011 100644
--- a/Modules/zipimport.c
+++ b/Modules/zipimport.c
@@ -475,8 +475,12 @@
 		strcpy(path + len, ".py");
 
 	toc_entry = PyDict_GetItemString(self->files, path);
-	if (toc_entry != NULL)
-		return get_data(PyString_AsString(self->archive), toc_entry);
+	if (toc_entry != NULL) {
+		PyObject *bytes = get_data(PyString_AsString(self->archive), toc_entry);
+		PyObject *res = PyUnicode_FromString(PyBytes_AsString(bytes));
+		Py_XDECREF(bytes);
+		return res;
+	}
 
 	/* we have the module, but no source */
 	Py_INCREF(Py_None);
@@ -857,8 +861,10 @@
 	}
 	buf[data_size] = '\0';
 
-	if (compress == 0)  /* data is not compressed */
+	if (compress == 0) {  /* data is not compressed */
+		raw_data = PyBytes_FromStringAndSize(buf, data_size);
 		return raw_data;
+	}
 
 	/* Decompress with zlib */
 	decompress = get_decompress_func();
@@ -896,8 +902,8 @@
 unmarshal_code(char *pathname, PyObject *data, time_t mtime)
 {
 	PyObject *code;
-	char *buf = PyString_AsString(data);
-	Py_ssize_t size = PyString_Size(data);
+	char *buf = PyBytes_AsString(data);
+	Py_ssize_t size = PyBytes_Size(data);
 
 	if (size <= 9) {
 		PyErr_SetString(ZipImportError,
@@ -942,14 +948,16 @@
 static PyObject *
 normalize_line_endings(PyObject *source)
 {
-	char *buf, *q, *p = PyString_AsString(source);
+	char *buf, *q, *p = PyBytes_AsString(source);
 	PyObject *fixed_source;
+	int len = 0;
 
-	if (!p)
-		return NULL;
+	if (!p) {
+		return PyBytes_FromStringAndSize("\n\0", 2);
+	}
 
 	/* one char extra for trailing \n and one for terminating \0 */
-	buf = (char *)PyMem_Malloc(PyString_Size(source) + 2);
+	buf = (char *)PyMem_Malloc(PyBytes_Size(source) + 2);
 	if (buf == NULL) {
 		PyErr_SetString(PyExc_MemoryError,
 				"zipimport: no memory to allocate "
@@ -965,10 +973,11 @@
 		}
 		else
 			*q++ = *p;
+		len++;
 	}
 	*q++ = '\n';  /* add trailing \n */
 	*q = '\0';
-	fixed_source = PyString_FromString(buf);
+	fixed_source = PyBytes_FromStringAndSize(buf, len + 2);
 	PyMem_Free(buf);
 	return fixed_source;
 }
@@ -984,7 +993,7 @@
 	if (fixed_source == NULL)
 		return NULL;
 
-	code = Py_CompileString(PyString_AsString(fixed_source), pathname,
+	code = Py_CompileString(PyBytes_AsString(fixed_source), pathname,
 				Py_file_input);
 	Py_DECREF(fixed_source);
 	return code;