From f5dd0ed2db311e60fcd7241a92bb60df37e21683 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Sat, 12 Sep 2026 15:41:27 +1000 Subject: [PATCH 1/3] Return 0 or -1 from ImagingSplit(), rather than number of bands --- src/_imaging.c | 2 +- src/libImaging/Bands.c | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/_imaging.c b/src/_imaging.c index 7e9c0e391c8..ada8c594b5c 100644 --- a/src/_imaging.c +++ b/src/_imaging.c @@ -2504,7 +2504,7 @@ _split(ImagingObject *self, PyObject *args) { PyObject *imaging_object; Imaging bands[4] = {NULL, NULL, NULL, NULL}; - if (!ImagingSplit(self->image, bands)) { + if (ImagingSplit(self->image, bands)) { return NULL; } diff --git a/src/libImaging/Bands.c b/src/libImaging/Bands.c index d1fa16addff..92999a5ddd8 100644 --- a/src/libImaging/Bands.c +++ b/src/libImaging/Bands.c @@ -75,13 +75,13 @@ ImagingSplit(Imaging imIn, Imaging bands[4]) { /* Check arguments */ if (!imIn || imIn->type != IMAGING_TYPE_UINT8) { (void)ImagingError_ModeError(); - return 0; + return -1; } /* Shortcuts */ if (imIn->bands == 1) { bands[0] = ImagingCopy(imIn); - return imIn->bands; + return 0; } for (i = 0; i < imIn->bands; i++) { @@ -90,7 +90,7 @@ ImagingSplit(Imaging imIn, Imaging bands[4]) { for (j = 0; j < i; ++j) { ImagingDelete(bands[j]); } - return 0; + return -1; } } @@ -170,7 +170,7 @@ ImagingSplit(Imaging imIn, Imaging bands[4]) { } } - return imIn->bands; + return 0; } Imaging From ec9eeddfd10ba90114f641a867451872aa6e186a Mon Sep 17 00:00:00 2001 From: Andrew Murray <3112309+radarhere@users.noreply.github.com> Date: Mon, 14 Sep 2026 11:01:27 +1000 Subject: [PATCH 2/3] Add comments Co-authored-by: Aarni Koskela --- src/libImaging/Bands.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/libImaging/Bands.c b/src/libImaging/Bands.c index 92999a5ddd8..c6ea81bfa69 100644 --- a/src/libImaging/Bands.c +++ b/src/libImaging/Bands.c @@ -68,6 +68,13 @@ ImagingGetBand(Imaging imIn, int band) { return imOut; } +int +/** + * Splits an image into its component bands. + * @param imIn The input image. + * @param bands An array of pointers to the output band images. + * @return -1 in case of an error, 0 otherwise. + */ int ImagingSplit(Imaging imIn, Imaging bands[4]) { int i, j, x, y; From e7d4b1e48d2c03a76d7d60b4463113e91b1b5a20 Mon Sep 17 00:00:00 2001 From: Andrew Murray Date: Mon, 14 Sep 2026 11:06:34 +1000 Subject: [PATCH 3/3] Pointers passed in should be null --- src/libImaging/Bands.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libImaging/Bands.c b/src/libImaging/Bands.c index c6ea81bfa69..410b722bde4 100644 --- a/src/libImaging/Bands.c +++ b/src/libImaging/Bands.c @@ -68,12 +68,12 @@ ImagingGetBand(Imaging imIn, int band) { return imOut; } -int /** * Splits an image into its component bands. - * @param imIn The input image. - * @param bands An array of pointers to the output band images. - * @return -1 in case of an error, 0 otherwise. + * + * @param imIn The input image. + * @param bands An array of null pointers to the output band images. + * @return -1 in case of an error, 0 otherwise. */ int ImagingSplit(Imaging imIn, Imaging bands[4]) {