fix a crash with 0 length vectors
This commit is contained in:
parent
1fe283cc85
commit
65d84d1cbe
@ -2,6 +2,7 @@
|
|||||||
- make exif resuint optional and default to inch
|
- make exif resuint optional and default to inch
|
||||||
- win: don't set create time on inappropriate file descriptors [lovell]
|
- win: don't set create time on inappropriate file descriptors [lovell]
|
||||||
- fall back to magicksave for gif if cgif is not present [erik-frontify]
|
- fall back to magicksave for gif if cgif is not present [erik-frontify]
|
||||||
|
- fix a crash with 0 length vectors
|
||||||
|
|
||||||
21/11/21 started 8.12.1
|
21/11/21 started 8.12.1
|
||||||
- fix insert [chregu]
|
- fix insert [chregu]
|
||||||
|
@ -987,7 +987,8 @@ vips_check_uintorf( const char *domain, VipsImage *im )
|
|||||||
int
|
int
|
||||||
vips_check_size_same( const char *domain, VipsImage *im1, VipsImage *im2 )
|
vips_check_size_same( const char *domain, VipsImage *im1, VipsImage *im2 )
|
||||||
{
|
{
|
||||||
if( im1->Xsize != im2->Xsize || im1->Ysize != im2->Ysize ) {
|
if( im1->Xsize != im2->Xsize ||
|
||||||
|
im1->Ysize != im2->Ysize ) {
|
||||||
vips_error( domain, "%s", _( "images must match in size" ) );
|
vips_error( domain, "%s", _( "images must match in size" ) );
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
@ -1157,7 +1158,8 @@ vips_check_vector_length( const char *domain, int n, int len )
|
|||||||
* @im: image to check against
|
* @im: image to check against
|
||||||
*
|
*
|
||||||
* Operations with a vector constant need a 1-element vector, or a vector with
|
* Operations with a vector constant need a 1-element vector, or a vector with
|
||||||
* the same number of elements as there are bands in the image.
|
* the same number of elements as there are bands in the image, or a 1-band
|
||||||
|
* image and a many-element vector.
|
||||||
*
|
*
|
||||||
* See also: vips_error().
|
* See also: vips_error().
|
||||||
*
|
*
|
||||||
@ -1166,13 +1168,25 @@ vips_check_vector_length( const char *domain, int n, int len )
|
|||||||
int
|
int
|
||||||
vips_check_vector( const char *domain, int n, VipsImage *im )
|
vips_check_vector( const char *domain, int n, VipsImage *im )
|
||||||
{
|
{
|
||||||
if( n != 1 && im->Bands != 1 && n != im->Bands ) {
|
/* Here it's clearer to list the cases that are OK.
|
||||||
vips_error( domain,
|
*/
|
||||||
_( "vector must have 1 or %d elements" ), im->Bands );
|
if( n == im->Bands )
|
||||||
return( -1 );
|
return( 0 );
|
||||||
}
|
if( n == 1 )
|
||||||
|
return( 0 );
|
||||||
|
if( im->Bands == 1 &&
|
||||||
|
n > 1 )
|
||||||
|
return( 0 );
|
||||||
|
|
||||||
return( 0 );
|
if( im->Bands == 1 )
|
||||||
|
vips_error( domain,
|
||||||
|
"%s", _( "vector must have 1 element" ) );
|
||||||
|
else
|
||||||
|
vips_error( domain,
|
||||||
|
_( "vector must have 1 or %d elements" ),
|
||||||
|
im->Bands );
|
||||||
|
|
||||||
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1191,7 +1205,8 @@ vips_check_vector( const char *domain, int n, VipsImage *im )
|
|||||||
int
|
int
|
||||||
vips_check_hist( const char *domain, VipsImage *im )
|
vips_check_hist( const char *domain, VipsImage *im )
|
||||||
{
|
{
|
||||||
if( im->Xsize != 1 && im->Ysize != 1 ) {
|
if( im->Xsize != 1 &&
|
||||||
|
im->Ysize != 1 ) {
|
||||||
vips_error( domain, "%s",
|
vips_error( domain, "%s",
|
||||||
_( "histograms must have width or height 1" ) );
|
_( "histograms must have width or height 1" ) );
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
Loading…
Reference in New Issue
Block a user