From: Michael W. Hudson Date: Mon, 30 Sep 2002 10:52:21 +0000 (+0000) Subject: Backport mhammond's 2.14: X-Git-Tag: v2.2.2b1~90 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7c2778f4239706d980e8f5c6479c6bfe41a0dc88;p=thirdparty%2FPython%2Fcpython.git Backport mhammond's 2.14: Fix bug [ 549731 ] Unicode encoders appears to leak references. Python 2.2.1 bugfix candidate. --- diff --git a/Python/codecs.c b/Python/codecs.c index b3778cf23417..cc0fabcb1898 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -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;