]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Backport mhammond's 2.14:
authorMichael W. Hudson <mwh@python.net>
Mon, 30 Sep 2002 10:52:21 +0000 (10:52 +0000)
committerMichael W. Hudson <mwh@python.net>
Mon, 30 Sep 2002 10:52:21 +0000 (10:52 +0000)
Fix bug [ 549731 ] Unicode encoders appears to leak references.

Python 2.2.1 bugfix candidate.

Python/codecs.c

index b3778cf2341702b6636a2ba0a0974d9ad3c361e4..cc0fabcb1898534165b6a3fbc43e91135f2eb87d 100644 (file)
@@ -271,6 +271,7 @@ PyObject *PyCodec_Encoder(const char *encoding)
     if (codecs == NULL)
        goto onError;
     v = PyTuple_GET_ITEM(codecs,0);
+    Py_DECREF(codecs);
     Py_INCREF(v);
     return v;
 
@@ -287,6 +288,7 @@ PyObject *PyCodec_Decoder(const char *encoding)
     if (codecs == NULL)
        goto onError;
     v = PyTuple_GET_ITEM(codecs,1);
+    Py_DECREF(codecs);
     Py_INCREF(v);
     return v;
 
@@ -298,12 +300,14 @@ PyObject *PyCodec_StreamReader(const char *encoding,
                               PyObject *stream,
                               const char *errors)
 {
-    PyObject *codecs;
+    PyObject *codecs, *ret;
 
     codecs = _PyCodec_Lookup(encoding);
     if (codecs == NULL)
        goto onError;
-    return build_stream_codec(PyTuple_GET_ITEM(codecs,2),stream,errors);
+    ret = build_stream_codec(PyTuple_GET_ITEM(codecs,2),stream,errors);
+    Py_DECREF(codecs);
+    return ret;
 
  onError:
     return NULL;
@@ -313,12 +317,14 @@ PyObject *PyCodec_StreamWriter(const char *encoding,
                               PyObject *stream,
                               const char *errors)
 {
-    PyObject *codecs;
+    PyObject *codecs, *ret;
 
     codecs = _PyCodec_Lookup(encoding);
     if (codecs == NULL)
        goto onError;
-    return build_stream_codec(PyTuple_GET_ITEM(codecs,3),stream,errors);
+    ret = build_stream_codec(PyTuple_GET_ITEM(codecs,3),stream,errors);
+    Py_DECREF(codecs);
+    return ret;
 
  onError:
     return NULL;