]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Marc-Andre Lemburg:
authorGuido van Rossum <guido@python.org>
Fri, 24 Mar 2000 20:52:23 +0000 (20:52 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 24 Mar 2000 20:52:23 +0000 (20:52 +0000)
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.

Python/codecs.c

index 2d493776008706912a54176bb98e4718c9d86c19..b2a19b839b31e3836325226bfa4343a57e40bfb6 100644 (file)
@@ -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;
 }