]> granicus.if.org Git - python/commitdiff
Fix resize_inplace(): update shared utf8 pointer
authorVictor Stinner <vstinner@wyplay.com>
Mon, 3 Oct 2011 10:11:00 +0000 (12:11 +0200)
committerVictor Stinner <vstinner@wyplay.com>
Mon, 3 Oct 2011 10:11:00 +0000 (12:11 +0200)
Objects/unicodeobject.c

index 68278e6040e79211ea187b56fd1ebd5798a9593c..e8b19cfbf56e5a7c080dca1e88808d9e49da922e 100644 (file)
@@ -443,13 +443,14 @@ resize_inplace(register PyUnicodeObject *unicode, Py_ssize_t length)
     if (PyUnicode_IS_READY(unicode)) {
         Py_ssize_t char_size;
         Py_ssize_t new_size;
-        int share_wstr;
+        int share_wstr, share_utf8;
         void *data;
 
         data = _PyUnicode_DATA_ANY(unicode);
         assert(data != NULL);
         char_size = PyUnicode_CHARACTER_SIZE(unicode);
         share_wstr = (_PyUnicode_WSTR(unicode) == data);
+        share_utf8 = (_PyUnicode_UTF8(unicode) == data);
 
         if (length > (PY_SSIZE_T_MAX / char_size - 1)) {
             PyErr_NoMemory();
@@ -465,6 +466,8 @@ resize_inplace(register PyUnicodeObject *unicode, Py_ssize_t length)
         _PyUnicode_DATA_ANY(unicode) = data;
         if (share_wstr)
             _PyUnicode_WSTR(unicode) = data;
+        if (share_utf8)
+            _PyUnicode_UTF8(unicode) = data;
         _PyUnicode_LENGTH(unicode) = length;
         PyUnicode_WRITE(PyUnicode_KIND(unicode), data, length, 0);
         if (share_wstr)