Handle allocation failures gracefully.  Found with failmalloc.
Many (all?) of these could be backported.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 08fdb3f..096dfc6 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -7918,6 +7918,9 @@
     unicode_freelist = NULL;
     unicode_freelist_size = 0;
     unicode_empty = _PyUnicode_New(0);
+    if (!unicode_empty)
+	return;
+
     strcpy(unicode_default_encoding, "ascii");
     for (i = 0; i < 256; i++)
 	unicode_latin1[i] = NULL;