mirror of
https://github.com/python-pillow/Pillow.git
synced 2024-11-11 04:07:21 +03:00
Merge pull request #5920 from radarhere/calloc
Fixed ImagePath.Path array handling
This commit is contained in:
commit
5543e4e2d4
|
@ -90,6 +90,8 @@ def test_path_odd_number_of_coordinates():
|
|||
[
|
||||
([0, 1, 2, 3], (0.0, 1.0, 2.0, 3.0)),
|
||||
([3, 2, 1, 0], (1.0, 0.0, 3.0, 2.0)),
|
||||
(0, (0.0, 0.0, 0.0, 0.0)),
|
||||
(1, (0.0, 0.0, 0.0, 0.0)),
|
||||
],
|
||||
)
|
||||
def test_getbbox(coords, expected):
|
||||
|
|
35
src/path.c
35
src/path.c
|
@ -57,7 +57,7 @@ alloc_array(Py_ssize_t count) {
|
|||
if ((unsigned long long)count > (SIZE_MAX / (2 * sizeof(double))) - 1) {
|
||||
return ImagingError_MemoryError();
|
||||
}
|
||||
xy = malloc(2 * count * sizeof(double) + 1);
|
||||
xy = calloc(2 * count * sizeof(double) + 1, sizeof(double));
|
||||
if (!xy) {
|
||||
ImagingError_MemoryError();
|
||||
}
|
||||
|
@ -327,21 +327,26 @@ path_getbbox(PyPathObject *self, PyObject *args) {
|
|||
|
||||
xy = self->xy;
|
||||
|
||||
x0 = x1 = xy[0];
|
||||
y0 = y1 = xy[1];
|
||||
if (self->count == 0) {
|
||||
x0 = x1 = 0;
|
||||
y0 = y1 = 0;
|
||||
} else {
|
||||
x0 = x1 = xy[0];
|
||||
y0 = y1 = xy[1];
|
||||
|
||||
for (i = 1; i < self->count; i++) {
|
||||
if (xy[i + i] < x0) {
|
||||
x0 = xy[i + i];
|
||||
}
|
||||
if (xy[i + i] > x1) {
|
||||
x1 = xy[i + i];
|
||||
}
|
||||
if (xy[i + i + 1] < y0) {
|
||||
y0 = xy[i + i + 1];
|
||||
}
|
||||
if (xy[i + i + 1] > y1) {
|
||||
y1 = xy[i + i + 1];
|
||||
for (i = 1; i < self->count; i++) {
|
||||
if (xy[i + i] < x0) {
|
||||
x0 = xy[i + i];
|
||||
}
|
||||
if (xy[i + i] > x1) {
|
||||
x1 = xy[i + i];
|
||||
}
|
||||
if (xy[i + i + 1] < y0) {
|
||||
y0 = xy[i + i + 1];
|
||||
}
|
||||
if (xy[i + i + 1] > y1) {
|
||||
y1 = xy[i + i + 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user