Commit 5c170fd4 authored by Georg Brandl's avatar Georg Brandl

Fix some missing checks after PyTuple_New, PyList_New, PyDict_New

parent a5a07049
...@@ -1482,7 +1482,8 @@ al_GetParams(PyObject *self, PyObject *args) ...@@ -1482,7 +1482,8 @@ al_GetParams(PyObject *self, PyObject *args)
} }
if (alGetParams(resource, pvs, npvs) < 0) if (alGetParams(resource, pvs, npvs) < 0)
goto error; goto error;
v = PyList_New(npvs); if (!(v = PyList_New(npvs)))
goto error;
for (i = 0; i < npvs; i++) { for (i = 0; i < npvs; i++) {
if (pvs[i].sizeOut < 0) { if (pvs[i].sizeOut < 0) {
char buf[32]; char buf[32];
...@@ -1692,6 +1693,7 @@ al_GetParamInfo(PyObject *self, PyObject *args) ...@@ -1692,6 +1693,7 @@ al_GetParamInfo(PyObject *self, PyObject *args)
if (alGetParamInfo(res, param, &pinfo) < 0) if (alGetParamInfo(res, param, &pinfo) < 0)
return NULL; return NULL;
v = PyDict_New(); v = PyDict_New();
if (!v) return NULL;
item = PyInt_FromLong((long) pinfo.resource); item = PyInt_FromLong((long) pinfo.resource);
PyDict_SetItemString(v, "resource", item); PyDict_SetItemString(v, "resource", item);
......
...@@ -1085,6 +1085,8 @@ gc_get_referrers(PyObject *self, PyObject *args) ...@@ -1085,6 +1085,8 @@ gc_get_referrers(PyObject *self, PyObject *args)
{ {
int i; int i;
PyObject *result = PyList_New(0); PyObject *result = PyList_New(0);
if (!result) return NULL;
for (i = 0; i < NUM_GENERATIONS; i++) { for (i = 0; i < NUM_GENERATIONS; i++) {
if (!(gc_referrers_for(args, GEN_HEAD(i), result))) { if (!(gc_referrers_for(args, GEN_HEAD(i), result))) {
Py_DECREF(result); Py_DECREF(result);
......
...@@ -935,24 +935,32 @@ build_namelists (PyObject *module) ...@@ -935,24 +935,32 @@ build_namelists (PyObject *module)
labels = PyList_New(num_controls); labels = PyList_New(num_controls);
names = PyList_New(num_controls); names = PyList_New(num_controls);
if (labels == NULL || names == NULL)
goto error2;
for (i = 0; i < num_controls; i++) { for (i = 0; i < num_controls; i++) {
s = PyString_FromString(control_labels[i]); s = PyString_FromString(control_labels[i]);
if (s == NULL) if (s == NULL)
return -1; goto error2;
PyList_SET_ITEM(labels, i, s); PyList_SET_ITEM(labels, i, s);
s = PyString_FromString(control_names[i]); s = PyString_FromString(control_names[i]);
if (s == NULL) if (s == NULL)
return -1; goto error2;
PyList_SET_ITEM(names, i, s); PyList_SET_ITEM(names, i, s);
} }
if (PyModule_AddObject(module, "control_labels", labels) == -1) if (PyModule_AddObject(module, "control_labels", labels) == -1)
return -1; goto error2;
if (PyModule_AddObject(module, "control_names", names) == -1) if (PyModule_AddObject(module, "control_names", names) == -1)
return -1; goto error1;
return 0; return 0;
error2:
Py_XDECREF(labels);
error1:
Py_XDECREF(names);
return -1;
} }
......
...@@ -1519,6 +1519,8 @@ xmlparse_getattr(xmlparseobject *self, char *name) ...@@ -1519,6 +1519,8 @@ xmlparse_getattr(xmlparseobject *self, char *name)
if (strcmp(name, "__members__") == 0) { if (strcmp(name, "__members__") == 0) {
int i; int i;
PyObject *rc = PyList_New(0); PyObject *rc = PyList_New(0);
if (!rc)
return NULL;
for (i = 0; handler_info[i].name != NULL; i++) { for (i = 0; handler_info[i].name != NULL; i++) {
PyObject *o = get_handler_name(&handler_info[i]); PyObject *o = get_handler_name(&handler_info[i]);
if (o != NULL) if (o != NULL)
......
...@@ -615,6 +615,7 @@ tuplesubscript(PyTupleObject* self, PyObject* item) ...@@ -615,6 +615,7 @@ tuplesubscript(PyTupleObject* self, PyObject* item)
} }
else { else {
result = PyTuple_New(slicelength); result = PyTuple_New(slicelength);
if (!result) return NULL;
src = self->ob_item; src = self->ob_item;
dest = ((PyTupleObject *)result)->ob_item; dest = ((PyTupleObject *)result)->ob_item;
......
...@@ -1106,16 +1106,19 @@ set_mro_error(PyObject *to_merge, int *remain) ...@@ -1106,16 +1106,19 @@ set_mro_error(PyObject *to_merge, int *remain)
char buf[1000]; char buf[1000];
PyObject *k, *v; PyObject *k, *v;
PyObject *set = PyDict_New(); PyObject *set = PyDict_New();
if (!set) return;
to_merge_size = PyList_GET_SIZE(to_merge); to_merge_size = PyList_GET_SIZE(to_merge);
for (i = 0; i < to_merge_size; i++) { for (i = 0; i < to_merge_size; i++) {
PyObject *L = PyList_GET_ITEM(to_merge, i); PyObject *L = PyList_GET_ITEM(to_merge, i);
if (remain[i] < PyList_GET_SIZE(L)) { if (remain[i] < PyList_GET_SIZE(L)) {
PyObject *c = PyList_GET_ITEM(L, remain[i]); PyObject *c = PyList_GET_ITEM(L, remain[i]);
if (PyDict_SetItem(set, c, Py_None) < 0) if (PyDict_SetItem(set, c, Py_None) < 0) {
Py_DECREF(set);
return; return;
} }
} }
}
n = PyDict_Size(set); n = PyDict_Size(set);
off = PyOS_snprintf(buf, sizeof(buf), "Cannot create a \ off = PyOS_snprintf(buf, sizeof(buf), "Cannot create a \
......
...@@ -319,7 +319,9 @@ static PyObject * ...@@ -319,7 +319,9 @@ static PyObject *
list2dict(PyObject *list) list2dict(PyObject *list)
{ {
Py_ssize_t i, n; Py_ssize_t i, n;
PyObject *v, *k, *dict = PyDict_New(); PyObject *v, *k;
PyObject *dict = PyDict_New();
if (!dict) return NULL;
n = PyList_Size(list); n = PyList_Size(list);
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment