Skip to content

Commit

Permalink
Handle failure from PyDict_New or PyList_New
Browse files Browse the repository at this point in the history
  • Loading branch information
radarhere committed Mar 10, 2023
1 parent cdf5fd4 commit 929dbba
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/_imaging.c
Original file line number Diff line number Diff line change
Expand Up @@ -1249,6 +1249,9 @@ _histogram(ImagingObject *self, PyObject *args) {

/* Build an integer list containing the histogram */
list = PyList_New(h->bands * 256);
if (list == NULL) {
return NULL;
}
for (i = 0; i < h->bands * 256; i++) {
PyObject *item;
item = PyLong_FromLong(h->histogram[i]);
Expand Down Expand Up @@ -2154,6 +2157,9 @@ _getcolors(ImagingObject *self, PyObject *args) {
Py_INCREF(out);
} else {
out = PyList_New(colors);
if (out == NULL) {
return NULL;
}
for (i = 0; i < colors; i++) {
ImagingColorItem *v = &items[i];
PyObject *item = Py_BuildValue(
Expand Down
9 changes: 9 additions & 0 deletions src/_imagingft.c
Original file line number Diff line number Diff line change
Expand Up @@ -1082,6 +1082,9 @@ font_getvarnames(FontObject *self) {

num_namedstyles = master->num_namedstyles;
list_names = PyList_New(num_namedstyles);
if (list_names == NULL) {
return NULL;
}

name_count = FT_Get_Sfnt_Name_Count(self->face);
for (i = 0; i < name_count; i++) {
Expand Down Expand Up @@ -1125,10 +1128,16 @@ font_getvaraxes(FontObject *self) {
name_count = FT_Get_Sfnt_Name_Count(self->face);

list_axes = PyList_New(num_axis);
if (list_axes == NULL) {
return NULL;
}
for (i = 0; i < num_axis; i++) {
axis = master->axis[i];

list_axis = PyDict_New();
if (list_axis == NULL) {
return NULL;
}
PyDict_SetItemString(
list_axis, "minimum", PyLong_FromLong(axis.minimum / 65536));
PyDict_SetItemString(list_axis, "default", PyLong_FromLong(axis.def / 65536));
Expand Down
7 changes: 6 additions & 1 deletion src/_imagingmorph.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,9 @@ match(PyObject *self, PyObject *args) {
int row_idx, col_idx;
UINT8 **inrows;
PyObject *ret = PyList_New(0);
if (ret == NULL) {
return NULL;
}

if (!PyArg_ParseTuple(args, "On", &py_lut, &i0)) {
PyErr_SetString(PyExc_RuntimeError, "Argument parsing problem");
Expand Down Expand Up @@ -213,10 +216,12 @@ get_on_pixels(PyObject *self, PyObject *args) {
int row_idx, col_idx;
int width, height;
PyObject *ret = PyList_New(0);
if (ret == NULL) {
return NULL;
}

if (!PyArg_ParseTuple(args, "n", &i0)) {
PyErr_SetString(PyExc_RuntimeError, "Argument parsing problem");

return NULL;
}
img = (Imaging)i0;
Expand Down
6 changes: 6 additions & 0 deletions src/path.c
Original file line number Diff line number Diff line change
Expand Up @@ -439,6 +439,9 @@ path_tolist(PyPathObject *self, PyObject *args) {

if (flat) {
list = PyList_New(self->count * 2);
if (list == NULL) {
return NULL;
}
for (i = 0; i < self->count * 2; i++) {
PyObject *item;
item = PyFloat_FromDouble(self->xy[i]);
Expand All @@ -449,6 +452,9 @@ path_tolist(PyPathObject *self, PyObject *args) {
}
} else {
list = PyList_New(self->count);
if (list == NULL) {
return NULL;
}
for (i = 0; i < self->count; i++) {
PyObject *item;
item = Py_BuildValue("dd", self->xy[i + i], self->xy[i + i + 1]);
Expand Down

0 comments on commit 929dbba

Please sign in to comment.