Correct a crash when two successive unicode allocations fail with a MemoryError:
the freelist contained half-initialized objects with freed pointers.

The comment
/* XXX UNREF/NEWREF interface should be more symmetrical */
was copied from tupleobject.c, and appears in some other places.
I sign the petition.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 7abf984..603c507 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -315,7 +315,7 @@
 	    if ((unicode->length < length) &&
                 unicode_resize(unicode, length) < 0) {
 		PyObject_DEL(unicode->str);
-		goto onError;
+		unicode->str = NULL;
 	    }
 	}
         else {
@@ -352,6 +352,8 @@
     return unicode;
 
  onError:
+    /* XXX UNREF/NEWREF interface should be more symmetrical */
+    _Py_DEC_REFTOTAL;
     _Py_ForgetReference((PyObject *)unicode);
     PyObject_Del(unicode);
     return NULL;