diff Objects/unicodeobject.c @ 74101:40a211eb4fda 3.2

fix possible if unlikely leak
author Benjamin Peterson <benjamin@python.org>
date Tue, 20 Dec 2011 13:29:45 -0600
parents f29d7d597fae
children 050c07b31192 ac29dc61873c
line wrap: on
line diff
--- a/Objects/unicodeobject.c	Tue Dec 20 10:12:41 2011 -0600
+++ b/Objects/unicodeobject.c	Tue Dec 20 13:29:45 2011 -0600
@@ -8888,9 +8888,13 @@
         /* create entries for translating chars in x to those in y */
         for (i = 0; i < PyUnicode_GET_SIZE(x); i++) {
             key = PyLong_FromLong(PyUnicode_AS_UNICODE(x)[i]);
+            if (!key)
+                goto err;
             value = PyLong_FromLong(PyUnicode_AS_UNICODE(y)[i]);
-            if (!key || !value)
+            if (!value) {
+                Py_DECREF(key);
                 goto err;
+            }
             res = PyDict_SetItem(new, key, value);
             Py_DECREF(key);
             Py_DECREF(value);