]> granicus.if.org Git - python/commitdiff
SF # 654974, fix unchecked return values in structseq
authorNeal Norwitz <nnorwitz@gmail.com>
Wed, 18 Dec 2002 23:20:39 +0000 (23:20 +0000)
committerNeal Norwitz <nnorwitz@gmail.com>
Wed, 18 Dec 2002 23:20:39 +0000 (23:20 +0000)
Check return values after memory allocation.
Also use Py_True instead of PyInt_FromLong(1) for bool value.

Backport candidate.

Objects/structseq.c

index e14e4ca0f678c905c99423fe3f1e9ca76a081ec5..effe360c1ee82bc24ec202da126908f85544f0d3 100644 (file)
@@ -150,6 +150,9 @@ structseq_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
        }
 
        res = (PyStructSequence*) PyStructSequence_New(type);
+       if (res == NULL) {
+               return NULL;
+       }
        for (i = 0; i < len; ++i) {
                PyObject *v = PySequence_Fast_GET_ITEM(arg, i);
                Py_INCREF(v);
@@ -360,6 +363,8 @@ PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)
        type->tp_itemsize = 0;
 
        members = PyMem_NEW(PyMemberDef, n_members-n_unnamed_members+1);
+       if (members == NULL)
+               return;
        
        for (i = k = 0; i < n_members; ++i) {
                if (desc->fields[i].name == PyStructSequence_UnnamedField)
@@ -387,6 +392,5 @@ PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)
                       PyInt_FromLong((long) n_members));
        PyDict_SetItemString(dict, unnamed_fields_key, 
                       PyInt_FromLong((long) n_unnamed_members));
-       PyDict_SetItemString(dict, "__safe_for_unpickling__", 
-                      PyInt_FromLong(1));
+       PyDict_SetItemString(dict, "__safe_for_unpickling__", Py_True);
 }