diff -r 58266f5101cc Objects/unicodeobject.c --- a/Objects/unicodeobject.c Tue Jan 26 21:46:03 2016 -0800 +++ b/Objects/unicodeobject.c Wed Jan 27 16:49:34 2016 +0100 @@ -911,6 +911,7 @@ resize_compact(PyObject *unicode, Py_ssi else if (_PyUnicode_HAS_WSTR_MEMORY(unicode)) { PyObject_DEL(_PyUnicode_WSTR(unicode)); _PyUnicode_WSTR(unicode) = NULL; + _PyUnicode_WSTR_LENGTH(unicode) = 0; } #ifdef Py_DEBUG unicode_fill_invalid(unicode, old_length); @@ -1298,8 +1299,8 @@ PyUnicode_New(Py_ssize_t size, Py_UCS4 m _PyUnicode_WSTR(unicode) = (wchar_t *)data; } else { + _PyUnicode_WSTR(unicode) = NULL; _PyUnicode_WSTR_LENGTH(unicode) = 0; - _PyUnicode_WSTR(unicode) = NULL; } } #ifdef Py_DEBUG @@ -3998,6 +3999,7 @@ PyUnicode_AsUnicodeAndSize(PyObject *uni /* sizeof(wchar_t) == 2 */ PyObject_FREE(_PyUnicode_WSTR(unicode)); _PyUnicode_WSTR(unicode) = NULL; + _PyUnicode_WSTR_LENGTH(unicode) = 0; Py_FatalError("Impossible unicode object state, wstr " "and str should share memory already."); return NULL; @@ -15043,9 +15045,9 @@ unicode_subtype_new(PyTypeObject *type, _PyUnicode_STATE(self).ascii = _PyUnicode_STATE(unicode).ascii; _PyUnicode_STATE(self).ready = 1; _PyUnicode_WSTR(self) = NULL; + _PyUnicode_WSTR_LENGTH(self) = 0; _PyUnicode_UTF8_LENGTH(self) = 0; _PyUnicode_UTF8(self) = NULL; - _PyUnicode_WSTR_LENGTH(self) = 0; _PyUnicode_DATA_ANY(self) = NULL; share_utf8 = 0;