diff Python/Python-ast.c @ 36794:df843b07f5fe legacy-trunk

Fix memory leak on attributes.
author Martin v. Löwis <martin@v.loewis.de>
date Thu, 02 Mar 2006 00:31:27 +0000
parents 57322cb2ca11
children f731859e9b3b dfc33ec7f73a
line wrap: on
line diff
--- a/Python/Python-ast.c	Thu Mar 02 00:21:10 2006 +0000
+++ b/Python/Python-ast.c	Thu Mar 02 00:31:27 2006 +0000
@@ -2324,10 +2324,14 @@
         }
         value = ast2obj_int(o->lineno);
         if (!value) goto failed;
-        PyObject_SetAttrString(result, "lineno", value);
+        if (PyObject_SetAttrString(result, "lineno", value) < 0)
+                goto failed;
+        Py_DECREF(value);
         value = ast2obj_int(o->col_offset);
         if (!value) goto failed;
-        PyObject_SetAttrString(result, "col_offset", value);
+        if (PyObject_SetAttrString(result, "col_offset", value) < 0)
+                goto failed;
+        Py_DECREF(value);
         return result;
 failed:
         Py_XDECREF(value);
@@ -2643,10 +2647,14 @@
         }
         value = ast2obj_int(o->lineno);
         if (!value) goto failed;
-        PyObject_SetAttrString(result, "lineno", value);
+        if (PyObject_SetAttrString(result, "lineno", value) < 0)
+                goto failed;
+        Py_DECREF(value);
         value = ast2obj_int(o->col_offset);
         if (!value) goto failed;
-        PyObject_SetAttrString(result, "col_offset", value);
+        if (PyObject_SetAttrString(result, "col_offset", value) < 0)
+                goto failed;
+        Py_DECREF(value);
         return result;
 failed:
         Py_XDECREF(value);
@@ -3023,7 +3031,7 @@
         if (PyDict_SetItemString(d, "AST", (PyObject*)AST_type) < 0) return;
         if (PyModule_AddIntConstant(m, "PyCF_ONLY_AST", PyCF_ONLY_AST) < 0)
                 return;
-        if (PyModule_AddStringConstant(m, "__version__", "42649") < 0)
+        if (PyModule_AddStringConstant(m, "__version__", "42753") < 0)
                 return;
         if(PyDict_SetItemString(d, "mod", (PyObject*)mod_type) < 0) return;
         if(PyDict_SetItemString(d, "Module", (PyObject*)Module_type) < 0)