Skip to content

Commit affd16a

Browse files
committed
Allow custom error message for ImagingError_ModeError and ImagingError_Mismatch
1 parent 84c992d commit affd16a

28 files changed

Lines changed: 84 additions & 80 deletions

src/_imaging.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -370,14 +370,18 @@ ImagingError_MemoryError(void) {
370370
}
371371

372372
void *
373-
ImagingError_Mismatch(void) {
374-
PyErr_SetString(PyExc_ValueError, "images do not match");
373+
ImagingError_Mismatch(const char *message) {
374+
PyErr_SetString(
375+
PyExc_ValueError, (message) ? (char *)message : "images do not match"
376+
);
375377
return NULL;
376378
}
377379

378380
void *
379-
ImagingError_ModeError(void) {
380-
PyErr_SetString(PyExc_ValueError, "image has wrong mode");
381+
ImagingError_ModeError(const char *message) {
382+
PyErr_SetString(
383+
PyExc_ValueError, (message) ? (char *)message : "image has wrong mode"
384+
);
381385
return NULL;
382386
}
383387

src/libImaging/AlphaComposite.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ ImagingAlphaComposite(Imaging imDst, Imaging imSrc) {
2626
/* Check arguments */
2727
if (!imDst || !imSrc ||
2828
(imDst->mode != IMAGING_MODE_RGBA && imDst->mode != IMAGING_MODE_LA)) {
29-
return ImagingError_ModeError();
29+
return ImagingError_ModeError(NULL);
3030
}
3131

3232
if (imDst->mode != imSrc->mode || imDst->xsize != imSrc->xsize ||
3333
imDst->ysize != imSrc->ysize) {
34-
return ImagingError_Mismatch();
34+
return ImagingError_Mismatch(NULL);
3535
}
3636

3737
imOut = ImagingNewDirty(imDst->mode, imDst->xsize, imDst->ysize);

src/libImaging/Bands.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ ImagingGetBand(Imaging imIn, int band) {
2424

2525
/* Check arguments */
2626
if (!imIn || imIn->type != IMAGING_TYPE_UINT8) {
27-
return (Imaging)ImagingError_ModeError();
27+
return (Imaging)ImagingError_ModeError(NULL);
2828
}
2929

3030
if (band < 0 || band >= imIn->bands) {
@@ -74,7 +74,7 @@ ImagingSplit(Imaging imIn, Imaging bands[4]) {
7474

7575
/* Check arguments */
7676
if (!imIn || imIn->type != IMAGING_TYPE_UINT8) {
77-
(void)ImagingError_ModeError();
77+
(void)ImagingError_ModeError(NULL);
7878
return 0;
7979
}
8080

@@ -179,7 +179,7 @@ ImagingPutBand(Imaging imOut, Imaging imIn, int band) {
179179

180180
/* Check arguments */
181181
if (!imIn || imIn->bands != 1 || !imOut) {
182-
return (Imaging)ImagingError_ModeError();
182+
return (Imaging)ImagingError_ModeError(NULL);
183183
}
184184

185185
if (band < 0 || band >= imOut->bands) {
@@ -188,7 +188,7 @@ ImagingPutBand(Imaging imOut, Imaging imIn, int band) {
188188

189189
if (imIn->type != imOut->type || imIn->xsize != imOut->xsize ||
190190
imIn->ysize != imOut->ysize) {
191-
return (Imaging)ImagingError_Mismatch();
191+
return (Imaging)ImagingError_Mismatch(NULL);
192192
}
193193

194194
/* Shortcuts */
@@ -225,7 +225,7 @@ ImagingFillBand(Imaging imOut, int band, int color) {
225225

226226
/* Check arguments */
227227
if (!imOut || imOut->type != IMAGING_TYPE_UINT8) {
228-
return (Imaging)ImagingError_ModeError();
228+
return (Imaging)ImagingError_ModeError(NULL);
229229
}
230230

231231
if (band < 0 || band >= imOut->bands) {
@@ -270,11 +270,11 @@ ImagingMerge(const ModeID mode, Imaging bands[4]) {
270270
break;
271271
}
272272
if (bands[i]->bands != 1) {
273-
return (Imaging)ImagingError_ModeError();
273+
return (Imaging)ImagingError_ModeError(NULL);
274274
}
275275
if (bands[i]->xsize != firstBand->xsize ||
276276
bands[i]->ysize != firstBand->ysize) {
277-
return (Imaging)ImagingError_Mismatch();
277+
return (Imaging)ImagingError_Mismatch(NULL);
278278
}
279279
}
280280
bandsCount = i;

src/libImaging/Blend.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,12 @@ ImagingBlend(Imaging imIn1, Imaging imIn2, float alpha) {
2626
if (!imIn1 || !imIn2 || imIn1->type != IMAGING_TYPE_UINT8 || imIn1->palette ||
2727
imIn1->mode == IMAGING_MODE_1 || imIn2->palette ||
2828
imIn2->mode == IMAGING_MODE_1) {
29-
return ImagingError_ModeError();
29+
return ImagingError_ModeError(NULL);
3030
}
3131

3232
if (imIn1->type != imIn2->type || imIn1->bands != imIn2->bands ||
3333
imIn1->xsize != imIn2->xsize || imIn1->ysize != imIn2->ysize) {
34-
return ImagingError_Mismatch();
34+
return ImagingError_Mismatch(NULL);
3535
}
3636

3737
/* Shortcuts */

src/libImaging/BoxBlur.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -251,18 +251,18 @@ ImagingBoxBlur(Imaging imOut, Imaging imIn, float xradius, float yradius, int n)
251251
if (imIn->mode != imOut->mode || imIn->type != imOut->type ||
252252
imIn->bands != imOut->bands || imIn->xsize != imOut->xsize ||
253253
imIn->ysize != imOut->ysize) {
254-
return ImagingError_Mismatch();
254+
return ImagingError_Mismatch(NULL);
255255
}
256256

257257
if (imIn->type != IMAGING_TYPE_UINT8) {
258-
return ImagingError_ModeError();
258+
return ImagingError_ModeError(NULL);
259259
}
260260

261261
if (imIn->mode != IMAGING_MODE_RGB && imIn->mode != IMAGING_MODE_RGBA &&
262262
imIn->mode != IMAGING_MODE_RGBa && imIn->mode != IMAGING_MODE_RGBX &&
263263
imIn->mode != IMAGING_MODE_CMYK && imIn->mode != IMAGING_MODE_L &&
264264
imIn->mode != IMAGING_MODE_LA && imIn->mode != IMAGING_MODE_La) {
265-
return ImagingError_ModeError();
265+
return ImagingError_ModeError(NULL);
266266
}
267267

268268
/* Apply blur in one dimension.

src/libImaging/Chops.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ create(Imaging im1, Imaging im2, const ModeID mode) {
7272
if (!im1 || !im2 || im1->type != IMAGING_TYPE_UINT8 ||
7373
(mode != IMAGING_MODE_UNKNOWN &&
7474
(im1->mode != IMAGING_MODE_1 || im2->mode != IMAGING_MODE_1))) {
75-
return (Imaging)ImagingError_ModeError();
75+
return (Imaging)ImagingError_ModeError(NULL);
7676
}
7777
if (im1->type != im2->type || im1->bands != im2->bands) {
78-
return (Imaging)ImagingError_Mismatch();
78+
return (Imaging)ImagingError_Mismatch(NULL);
7979
}
8080

8181
xsize = (im1->xsize < im2->xsize) ? im1->xsize : im2->xsize;

src/libImaging/ColorLUT.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,12 +89,12 @@ ImagingColorLUT3D_linear(
8989

9090
if (imIn->type != IMAGING_TYPE_UINT8 || imOut->type != IMAGING_TYPE_UINT8 ||
9191
imIn->bands < 3 || imOut->bands < table_channels) {
92-
return (Imaging)ImagingError_ModeError();
92+
return (Imaging)ImagingError_ModeError(NULL);
9393
}
9494

9595
/* In case we have one extra band in imOut and don't have in imIn.*/
9696
if (imOut->bands > table_channels && imOut->bands > imIn->bands) {
97-
return (Imaging)ImagingError_ModeError();
97+
return (Imaging)ImagingError_ModeError(NULL);
9898
}
9999

100100
ImagingSectionEnter(&cookie);

src/libImaging/Convert.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1581,13 +1581,13 @@ convert(Imaging imOut, Imaging imIn, ModeID mode, ImagingPalette palette, int di
15811581
ImagingShuffler convert;
15821582

15831583
if (!imIn) {
1584-
return (Imaging)ImagingError_ModeError();
1584+
return (Imaging)ImagingError_ModeError(NULL);
15851585
}
15861586

15871587
if (mode == IMAGING_MODE_UNKNOWN) {
15881588
/* Map palette image to full depth */
15891589
if (!imIn->palette) {
1590-
return (Imaging)ImagingError_ModeError();
1590+
return (Imaging)ImagingError_ModeError(NULL);
15911591
}
15921592
mode = imIn->palette->mode;
15931593
} else {
@@ -1673,7 +1673,7 @@ ImagingConvertTransparent(Imaging imIn, const ModeID mode, int r, int g, int b)
16731673
int y;
16741674

16751675
if (!imIn) {
1676-
return (Imaging)ImagingError_ModeError();
1676+
return (Imaging)ImagingError_ModeError(NULL);
16771677
}
16781678

16791679
if (imIn->mode == IMAGING_MODE_RGB &&
@@ -1747,7 +1747,7 @@ ImagingConvertInPlace(Imaging imIn, const ModeID mode) {
17471747
} else if (imIn->mode == IMAGING_MODE_1 && mode == IMAGING_MODE_L) {
17481748
convert = bit2l;
17491749
} else {
1750-
return ImagingError_ModeError();
1750+
return ImagingError_ModeError(NULL);
17511751
}
17521752

17531753
ImagingSectionEnter(&cookie);

src/libImaging/Crop.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ ImagingCrop(Imaging imIn, int sx0, int sy0, int sx1, int sy1) {
2525
INT32 zero = 0;
2626

2727
if (!imIn) {
28-
return (Imaging)ImagingError_ModeError();
28+
return (Imaging)ImagingError_ModeError(NULL);
2929
}
3030

3131
xsize = sx1 - sx0;

src/libImaging/Dib.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ ImagingNewDIB(const ModeID mode, int xsize, int ysize) {
5959

6060
/* Check mode */
6161
if (mode != IMAGING_MODE_1 && mode != IMAGING_MODE_L && mode != IMAGING_MODE_RGB) {
62-
return (ImagingDIB)ImagingError_ModeError();
62+
return (ImagingDIB)ImagingError_ModeError(NULL);
6363
}
6464

6565
const int pixelsize = mode == IMAGING_MODE_RGB ? 3 : 1;

0 commit comments

Comments
 (0)