]> granicus.if.org Git - python/commitdiff
Issue #15900: Fixed reference leak in PyUnicode_TranslateCharmap()
authorChristian Heimes <christian@cheimes.de>
Tue, 11 Sep 2012 12:03:25 +0000 (14:03 +0200)
committerChristian Heimes <christian@cheimes.de>
Tue, 11 Sep 2012 12:03:25 +0000 (14:03 +0200)
Misc/NEWS
Objects/unicodeobject.c

index d1aeaec9b558fe833ef51c82a92197749cd7a1db..85160873f43e22930caa0890016989122608c0ad 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,8 @@ What's New in Python 3.3.1
 Core and Builtins
 -----------------
 
+- Issue #15900: Fixed reference leak in PyUnicode_TranslateCharmap().
+
 - Issue #15839: Convert SystemErrors in super() to RuntimeErrors.
 
 - Issue #15846: Fix SystemError which happened when using ast.parse in an
index 2d74d1cca3bbd2fc229e49d7f1e8c191961c24c3..61f743ebda60bea74240f9c402be00c1da5952d9 100644 (file)
@@ -8585,10 +8585,13 @@ PyUnicode_TranslateCharmap(const Py_UNICODE *p,
                            PyObject *mapping,
                            const char *errors)
 {
+    PyObject *result;
     PyObject *unicode = PyUnicode_FromUnicode(p, size);
     if (!unicode)
         return NULL;
-    return _PyUnicode_TranslateCharmap(unicode, mapping, errors);
+    result = _PyUnicode_TranslateCharmap(unicode, mapping, errors);
+    Py_DECREF(unicode);
+    return result;
 }
 
 PyObject *
@@ -8600,14 +8603,10 @@ PyUnicode_Translate(PyObject *str,
 
     str = PyUnicode_FromObject(str);
     if (str == NULL)
-        goto onError;
+        return NULL;
     result = _PyUnicode_TranslateCharmap(str, mapping, errors);
     Py_DECREF(str);
     return result;
-
-  onError:
-    Py_XDECREF(str);
-    return NULL;
 }
 
 static Py_UCS4