summaryrefslogtreecommitdiffstats
path: root/Python/codecs.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-03-24 20:52:23 (GMT)
committerGuido van Rossum <guido@python.org>2000-03-24 20:52:23 (GMT)
commit5ba3c843db445c0b8d35bc3823f1b402c91ebe08 (patch)
treee7f208becd9e42a5e5f1a75772acacd41b334eb1 /Python/codecs.c
parentd8fbcc95d9585cf1e7a10a24f2717e9d0b7a3de0 (diff)
downloadcpython-5ba3c843db445c0b8d35bc3823f1b402c91ebe08.zip
cpython-5ba3c843db445c0b8d35bc3823f1b402c91ebe08.tar.gz
cpython-5ba3c843db445c0b8d35bc3823f1b402c91ebe08.tar.bz2
Marc-Andre Lemburg:
Andy Robinson noted a core dump in the codecs.c file. This was introduced by my latest patch which fixed a memory leak in codecs.c. The bug causes all successful codec lookups to fail.
Diffstat (limited to 'Python/codecs.c')
-rw-r--r--Python/codecs.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/Python/codecs.c b/Python/codecs.c
index 2d49377..b2a19b8 100644
--- a/Python/codecs.c
+++ b/Python/codecs.c
@@ -93,7 +93,7 @@ PyObject *lowercasestring(const char *string)
PyObject *_PyCodec_Lookup(const char *encoding)
{
- PyObject *result, *args = NULL, *v = NULL;
+ PyObject *result, *args = NULL, *v;
int i, len;
if (_PyCodec_SearchCache == NULL || _PyCodec_SearchPath == NULL) {
@@ -119,15 +119,14 @@ PyObject *_PyCodec_Lookup(const char *encoding)
}
/* Next, scan the search functions in order of registration */
- len = PyList_Size(_PyCodec_SearchPath);
- if (len < 0)
- goto onError;
-
args = PyTuple_New(1);
if (args == NULL)
goto onError;
PyTuple_SET_ITEM(args,0,v);
- v = NULL;
+
+ len = PyList_Size(_PyCodec_SearchPath);
+ if (len < 0)
+ goto onError;
for (i = 0; i < len; i++) {
PyObject *func;
@@ -135,7 +134,7 @@ PyObject *_PyCodec_Lookup(const char *encoding)
func = PyList_GetItem(_PyCodec_SearchPath, i);
if (func == NULL)
goto onError;
- result = PyEval_CallObject(func,args);
+ result = PyEval_CallObject(func, args);
if (result == NULL)
goto onError;
if (result == Py_None) {
@@ -163,7 +162,6 @@ PyObject *_PyCodec_Lookup(const char *encoding)
return result;
onError:
- Py_XDECREF(v);
Py_XDECREF(args);
return NULL;
}