mirror of
https://github.com/python/cpython.git
synced 2025-07-28 21:55:21 +00:00
Fix some missing checks after PyTuple_New, PyList_New, PyDict_New
This commit is contained in:
parent
a5a0704942
commit
5c170fd4a9
7 changed files with 27 additions and 7 deletions
|
@ -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)
|
||||||
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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
|
|
||||||
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)
|
||||||
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)
|
||||||
}
|
}
|
||||||
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,14 +1106,17 @@ 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);
|
||||||
|
|
|
@ -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++) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue