[Python-checkins] cpython: Simplify unicode_resizable(): singletons reference count is at least 2

victor.stinner python-checkins at python.org
Mon Oct 3 20:06:28 CEST 2011


http://hg.python.org/cpython/rev/6fbc5e9141fc
changeset:   72620:6fbc5e9141fc
user:        Victor Stinner <victor.stinner at haypocalc.com>
date:        Mon Oct 03 20:06:05 2011 +0200
summary:
  Simplify unicode_resizable(): singletons reference count is at least 2

files:
  Objects/unicodeobject.c |  20 +++++++-------------
  1 files changed, 7 insertions(+), 13 deletions(-)


diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -1257,26 +1257,20 @@
 static int
 unicode_resizable(PyObject *unicode)
 {
-    Py_ssize_t len;
     if (Py_REFCNT(unicode) != 1)
         return 0;
     if (PyUnicode_CHECK_INTERNED(unicode))
         return 0;
-    if (unicode == unicode_empty)
-        return 0;
-    if (_PyUnicode_KIND(unicode) == PyUnicode_WCHAR_KIND)
-        len = PyUnicode_WSTR_LENGTH(unicode);
-    else
-        len = PyUnicode_GET_LENGTH(unicode);
-    if (len == 1) {
-        Py_UCS4 ch;
-        if (_PyUnicode_KIND(unicode) == PyUnicode_WCHAR_KIND)
-            ch = _PyUnicode_WSTR(unicode)[0];
-        else
-            ch = PyUnicode_READ_CHAR(unicode, 0);
+    assert (unicode != unicode_empty);
+#ifdef Py_DEBUG
+    if (_PyUnicode_KIND(unicode) != PyUnicode_WCHAR_KIND
+        && PyUnicode_GET_LENGTH(unicode) == 1)
+    {
+        Py_UCS4 ch = PyUnicode_READ_CHAR(unicode, 0);
         if (ch < 256 && unicode_latin1[ch] == unicode)
             return 0;
     }
+#endif
     return 1;
 }
 

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list