diff --git a/libsrc/iofuncs/im_cp_desc.c b/libsrc/iofuncs/im_cp_desc.c index addd7320..94e42ec9 100644 --- a/libsrc/iofuncs/im_cp_desc.c +++ b/libsrc/iofuncs/im_cp_desc.c @@ -108,8 +108,7 @@ im_cp_desc_array( IMAGE *out, IMAGE *in[] ) */ im__meta_destroy( out ); for( i = ni - 1; i >= 0; i-- ) - if( im_image_sanity( in[i] ) || - im__meta_cp( out, in[i] ) ) + if( im__meta_cp( out, in[i] ) ) return( -1 ); /* Merge hists first to last. diff --git a/libsrc/iofuncs/im_generate.c b/libsrc/iofuncs/im_generate.c index 57e4fb7d..021f016f 100644 --- a/libsrc/iofuncs/im_generate.c +++ b/libsrc/iofuncs/im_generate.c @@ -375,8 +375,8 @@ im_generate( IMAGE *im, REGION *or; im_threadgroup_t *tg; - if( im_image_sanity( im ) ) - return( -1 ); + im_image_sanity( im ); + if( im->Xsize <= 0 || im->Ysize <= 0 || im->Bands <= 0 ) { im_error( "im_generate", _( "bad dimensions" ) ); return( -1 ); @@ -474,8 +474,7 @@ im_prepare_thread( im_threadgroup_t *tg, REGION *or, Rect *r ) { IMAGE *im = or->im; - if( im_image_sanity( im ) ) - return( -1 ); + im_image_sanity( im ); switch( im->dtype ) { case IM_PARTIAL: diff --git a/libsrc/iofuncs/im_iocheck.c b/libsrc/iofuncs/im_iocheck.c index 3fac63fc..3dc31f5b 100644 --- a/libsrc/iofuncs/im_iocheck.c +++ b/libsrc/iofuncs/im_iocheck.c @@ -147,8 +147,7 @@ convert_otom( IMAGE *im ) int im_incheck( IMAGE *im ) { - if( im_image_sanity( im ) ) - return( -1 ); + im_image_sanity( im ); #ifdef DEBUG_IO printf( "im_incheck: old-style input for %s\n", im->filename ); @@ -174,7 +173,7 @@ im_incheck( IMAGE *im ) case IM_PARTIAL: #ifdef DEBUG_IO - printf( "im_incheck: converting partial image for old-style input\n" ); + printf( "im_incheck: converting partial image to WIO\n" ); #endif/*DEBUG_IO*/ /* Change to a setbuf, so our caller can use it. diff --git a/libsrc/iofuncs/im_iterate.c b/libsrc/iofuncs/im_iterate.c index 968f2912..e5f7c3bc 100644 --- a/libsrc/iofuncs/im_iterate.c +++ b/libsrc/iofuncs/im_iterate.c @@ -203,8 +203,7 @@ im_iterate( IMAGE *im, im_threadgroup_t *tg; int result; - if( im_image_sanity( im ) ) - return( -1 ); + im_image_sanity( im ); if( !(t = im_open( "iterate", "p" )) ) return( -1 ); diff --git a/libsrc/iofuncs/im_open.c b/libsrc/iofuncs/im_open.c index fb712565..911fffcd 100644 --- a/libsrc/iofuncs/im_open.c +++ b/libsrc/iofuncs/im_open.c @@ -671,6 +671,8 @@ im_image_sanity( IMAGE *im ) im ? (im->filename ? im->filename : "") : "", im, msg ); im_printdesc( im ); + + return( -1 ); } return( 0 ); diff --git a/libsrc/iofuncs/im_piocheck.c b/libsrc/iofuncs/im_piocheck.c index 6e94c35d..e200297b 100644 --- a/libsrc/iofuncs/im_piocheck.c +++ b/libsrc/iofuncs/im_piocheck.c @@ -77,8 +77,7 @@ int im_pincheck( IMAGE *im ) { - if( im_image_sanity( im ) ) - return( -1 ); + im_image_sanity( im ); #ifdef DEBUG_IO printf( "im_pincheck: enabling partial input for %s\n", im->filename ); diff --git a/libsrc/iofuncs/im_setupout.c b/libsrc/iofuncs/im_setupout.c index 02c5737b..3f8b996c 100644 --- a/libsrc/iofuncs/im_setupout.c +++ b/libsrc/iofuncs/im_setupout.c @@ -91,8 +91,8 @@ int im_setupout( IMAGE *im ) { - if( im_image_sanity( im ) ) - return( -1 ); + im_image_sanity( im ); + if( im->Xsize <= 0 || im->Ysize <= 0 || im->Bands <= 0 ) { im_error( "im_setupout", _( "bad dimensions" ) ); return( -1 ); diff --git a/man/im_image_sanity.3 b/man/im_image_sanity.3 index f29d2047..a7e29bb7 100644 --- a/man/im_image_sanity.3 +++ b/man/im_image_sanity.3 @@ -9,7 +9,7 @@ int im_image_sanity( IMAGE *im ) .SH DESCRIPTION .B im_image_sanity(3) performs a few simple checks on the IMAGE for bad fields. If it finds a -problem, it returns -1, serts im_errorstring, and prints a warning message. +problem it prints a warning message and returns -1. It is called from various places within VIPS to try to catch errors early.