diff -r 34ace7eb67e9 Objects/unicodeobject.c --- a/Objects/unicodeobject.c Mon Apr 07 11:20:22 2014 +0200 +++ b/Objects/unicodeobject.c Fri Apr 04 02:35:27 2014 -0400 @@ -8551,28 +8551,24 @@ unicode_fast_translate_lookup(PyObject *mapping, Py_UCS1 ch, Py_UCS1 *translate) { - PyObject *item; + PyObject *item = NULL; int ret = 0; - item = NULL; if (charmaptranslate_lookup(ch, mapping, &item)) { return -1; } if (item == Py_None) { - /* deletion: skip fast translate */ + /* deletion */ translate[ch] = 0xfe; - return 1; - } - - if (item == NULL) { + } + else if (item == NULL) { /* not found => default to 1:1 mapping */ translate[ch] = ch; return 1; } - - if (PyLong_Check(item)) { - long replace = (Py_UCS4)PyLong_AS_LONG(item); + else if (PyLong_Check(item)) { + Py_UCS4 replace = (Py_UCS4)PyLong_AS_LONG(item); /* PyLong_AS_LONG() cannot fail, charmaptranslate_lookup() already used it */ if (127 < replace) { @@ -8598,7 +8594,7 @@ translate[ch] = (Py_UCS1)replace; } else { - /* not a long or unicode */ + /* not None, NULL, long or unicode */ goto exit; } Py_DECREF(item);