[Patches] [ python-Patches-1752317 ] reference leak in _PyUnicode_AsDefaultEncodedString

SourceForge.net noreply at sourceforge.net
Thu Jul 12 01:57:32 CEST 2007


Patches item #1752317, was opened at 2007-07-12 01:57
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1752317&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Core (C code)
Group: Python 3000
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Amaury Forgeot d'Arc (amauryf)
Assigned to: Nobody/Anonymous (nobody)
Summary: reference leak in _PyUnicode_AsDefaultEncodedString

Initial Comment:
If I understand correctlty, _PyUnicode_AsDefaultEncodedString creates and caches a utf8 translation of the string. It returns a borrowed reference to this.
But the stored value (in ->defenc) has a refcount of 2, and will never be released when the unicode object is freed.

The effect is obvious in debug build: the total references count used to increase by 1 for each function call.

The patch is easy:

Index: Objects/unicodeobject.c
=======================================================
--- Objects/unicodeobject.c     (revision 56284)
+++ Objects/unicodeobject.c     (working copy)
@@ -1207,7 +1213,6 @@
                                    PyBytes_Size(b));
     Py_DECREF(b);
     if (!errors) {
-        Py_XINCREF(v);
         ((PyUnicodeObject *)unicode)->defenc = v;
     }
     return v;



----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1752317&group_id=5470


More information about the Patches mailing list