Sheesh -- repair the dodge around "cast isn't an lvalue" complaints to
restore correct semantics.
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index 65a28cb..5df3fc2 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -75,11 +75,13 @@
 	if (size == 0) {
 		PyObject *t = (PyObject *)op;
 		PyString_InternInPlace(&t);
+		op = (PyStringObject *)t;
 		nullstring = op;
 		Py_INCREF(op);
 	} else if (size == 1 && str != NULL) {
 		PyObject *t = (PyObject *)op;
 		PyString_InternInPlace(&t);
+		op = (PyStringObject *)t;
 		characters[*str & UCHAR_MAX] = op;
 		Py_INCREF(op);
 	}
@@ -131,11 +133,13 @@
 	if (size == 0) {
 		PyObject *t = (PyObject *)op;
 		PyString_InternInPlace(&t);
+		op = (PyStringObject *)t;
 		nullstring = op;
 		Py_INCREF(op);
 	} else if (size == 1) {
 		PyObject *t = (PyObject *)op;
 		PyString_InternInPlace(&t);
+		op = (PyStringObject *)t;
 		characters[*str & UCHAR_MAX] = op;
 		Py_INCREF(op);
 	}