Make test_new pass.
diff --git a/Lib/test/test_new.py b/Lib/test/test_new.py
index 797a8c3..c919621 100644
--- a/Lib/test/test_new.py
+++ b/Lib/test/test_new.py
@@ -143,7 +143,7 @@
                 firstlineno, lnotab)
 
             # new.code used to be a way to mutate a tuple...
-            class S(str):
+            class S(str8):
                 pass
             t = (S("ab"),)
             d = new.code(argcount, kwonlyargcount, nlocals, stacksize,
diff --git a/Objects/funcobject.c b/Objects/funcobject.c
index adbb6d5..0069fc1 100644
--- a/Objects/funcobject.c
+++ b/Objects/funcobject.c
@@ -482,6 +482,11 @@
 			      &PyDict_Type, &globals,
 			      &name, &defaults, &closure))
 		return NULL;
+        if (PyUnicode_Check(name)) {
+		name = _PyUnicode_AsDefaultEncodedString(name, NULL);
+		if (name == NULL)
+			return NULL;
+	}
 	if (name != Py_None && !PyString_Check(name)) {
 		PyErr_SetString(PyExc_TypeError,
 				"arg 3 (name) must be None or string");