@@ -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 (NULL );
27+ return (Imaging )ImagingError_NotSupportedError (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 (NULL );
77+ (void )ImagingError_NotSupportedError (NULL );
7878 return 0 ;
7979 }
8080
@@ -178,17 +178,20 @@ ImagingPutBand(Imaging imOut, Imaging imIn, int band) {
178178 int x , y ;
179179
180180 /* Check arguments */
181- if (!imIn || imIn -> bands != 1 || !imOut ) {
181+ if (!imIn || !imOut ) {
182182 return (Imaging )ImagingError_ModeError (NULL );
183183 }
184+ if (imIn -> bands != 1 ) {
185+ return (Imaging )ImagingError_ModeError ("source image must have exactly 1 band" );
186+ }
184187
185188 if (band < 0 || band >= imOut -> bands ) {
186189 return (Imaging )ImagingError_ValueError ("band index out of range" );
187190 }
188191
189192 if (imIn -> type != imOut -> type || imIn -> xsize != imOut -> xsize ||
190193 imIn -> ysize != imOut -> ysize ) {
191- return (Imaging )ImagingError_Mismatch (NULL );
194+ return (Imaging )ImagingError_Mismatch ("image types and sizes must match" );
192195 }
193196
194197 /* Shortcuts */
@@ -224,8 +227,12 @@ ImagingFillBand(Imaging imOut, int band, int color) {
224227 int x , y ;
225228
226229 /* Check arguments */
227- if (!imOut || imOut -> type != IMAGING_TYPE_UINT8 ) {
228- return (Imaging )ImagingError_ModeError (NULL );
230+ if (!imOut ) {
231+ return (Imaging )ImagingError_ValueError (NULL );
232+ }
233+
234+ if (imOut -> type != IMAGING_TYPE_UINT8 ) {
235+ return (Imaging )ImagingError_NotSupportedError ("only 8-bit images supported" );
229236 }
230237
231238 if (band < 0 || band >= imOut -> bands ) {
@@ -270,11 +277,13 @@ ImagingMerge(const ModeID mode, Imaging bands[4]) {
270277 break ;
271278 }
272279 if (bands [i ]-> bands != 1 ) {
273- return (Imaging )ImagingError_ModeError (NULL );
280+ return (Imaging )ImagingError_ModeError (
281+ "source image must have exactly 1 band"
282+ );
274283 }
275284 if (bands [i ]-> xsize != firstBand -> xsize ||
276285 bands [i ]-> ysize != firstBand -> ysize ) {
277- return (Imaging )ImagingError_Mismatch (NULL );
286+ return (Imaging )ImagingError_Mismatch ("image sizes must match" );
278287 }
279288 }
280289 bandsCount = i ;
0 commit comments