diff --git a/ChangeLog b/ChangeLog index 1cc12a86..4a5ccd76 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ - bicubic is better on 32-bit int images - add pdfload, svgload, gifload for PDF, SVG and GIF rendering - vipsthumbnail knows about pdfload and svgload +- matload is more specific (thanks bithive) 27/1/16 started 8.2.3 - fix a crash with SPARC byte-order labq vips images diff --git a/libvips/foreign/matlab.c b/libvips/foreign/matlab.c index a7663f55..a4b3d576 100644 --- a/libvips/foreign/matlab.c +++ b/libvips/foreign/matlab.c @@ -7,6 +7,8 @@ * 21/8/14 * - swap width/height * - set interpretation to rgb16 etc. + * 16/2/16 + * - more specific is_a test */ /* @@ -319,14 +321,13 @@ vips__mat_load( const char *filename, VipsImage *out ) int vips__mat_ismat( const char *filename ) { - mat_t *mat; + unsigned char buf[15]; - vips_error_freeze(); - mat = Mat_Open( filename, MAT_ACC_RDONLY ); - Mat_Close( mat ); - vips_error_thaw(); + if( vips__get_bytes( filename, buf, 10 ) && + vips_isprefix( "MATLAB 5.0", (char *) buf ) ) + return( 1 ); - return( mat != NULL ); + return( 0 ); } const char *vips__mat_suffs[] = { ".mat", NULL }; diff --git a/libvips/foreign/matload.c b/libvips/foreign/matload.c index 2101ccde..4423894a 100644 --- a/libvips/foreign/matload.c +++ b/libvips/foreign/matload.c @@ -122,11 +122,6 @@ vips_foreign_load_mat_class_init( VipsForeignLoadMatClass *class ) foreign_class->suffs = vips__mat_suffs; - /* We need to be lower priority than the jpeg loader, since some jpegs - * can make libmatio segv on Mat_Open(). - */ - foreign_class->priority = -50; - load_class->is_a = vips__mat_ismat; load_class->get_flags_filename = vips_foreign_load_mat_get_flags_filename;