Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e21262c

Browse files
committed
Fix bug [ 549731 ] Unicode encoders appears to leak references.
Python 2.2.1 bugfix candidate.
1 parent 5a7ef7e commit e21262c

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

Python/codecs.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ PyObject *PyCodec_Encoder(const char *encoding)
271271
if (codecs == NULL)
272272
goto onError;
273273
v = PyTuple_GET_ITEM(codecs,0);
274+
Py_DECREF(codecs);
274275
Py_INCREF(v);
275276
return v;
276277

@@ -287,6 +288,7 @@ PyObject *PyCodec_Decoder(const char *encoding)
287288
if (codecs == NULL)
288289
goto onError;
289290
v = PyTuple_GET_ITEM(codecs,1);
291+
Py_DECREF(codecs);
290292
Py_INCREF(v);
291293
return v;
292294

@@ -298,12 +300,14 @@ PyObject *PyCodec_StreamReader(const char *encoding,
298300
PyObject *stream,
299301
const char *errors)
300302
{
301-
PyObject *codecs;
303+
PyObject *codecs, *ret;
302304

303305
codecs = _PyCodec_Lookup(encoding);
304306
if (codecs == NULL)
305307
goto onError;
306-
return build_stream_codec(PyTuple_GET_ITEM(codecs,2),stream,errors);
308+
ret = build_stream_codec(PyTuple_GET_ITEM(codecs,2),stream,errors);
309+
Py_DECREF(codecs);
310+
return ret;
307311

308312
onError:
309313
return NULL;
@@ -313,12 +317,14 @@ PyObject *PyCodec_StreamWriter(const char *encoding,
313317
PyObject *stream,
314318
const char *errors)
315319
{
316-
PyObject *codecs;
320+
PyObject *codecs, *ret;
317321

318322
codecs = _PyCodec_Lookup(encoding);
319323
if (codecs == NULL)
320324
goto onError;
321-
return build_stream_codec(PyTuple_GET_ITEM(codecs,3),stream,errors);
325+
ret = build_stream_codec(PyTuple_GET_ITEM(codecs,3),stream,errors);
326+
Py_DECREF(codecs);
327+
return ret;
322328

323329
onError:
324330
return NULL;

0 commit comments

Comments
 (0)