From 0fd2ecf84c59d68db2e85aeaaf54f1697d088ce3 Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Wed, 7 Dec 2011 23:59:42 -0500 Subject: [PATCH] redirect OpenSlide error logging to vips_error() OpenSlide uses g_critical() and g_warning() for unexpected conditions, so if these are configured as fatal errors in glib (e.g. libvips or nip2 is built with --enable-debug=yes) the program will crash instead. --- libvips/format/openslide.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/libvips/format/openslide.c b/libvips/format/openslide.c index 5da10c55..81e5c363 100644 --- a/libvips/format/openslide.c +++ b/libvips/format/openslide.c @@ -15,6 +15,8 @@ * - use VIPS_ARRAY() * - add helper to copy a line of pixels * - support reading associated images + * 7/12/11 + * - redirect OpenSlide error logging to vips_error() */ /* @@ -366,6 +368,13 @@ slide_flags( const char *filename ) } } +static void +error_handler( const char *domain, GLogLevelFlags level, const char *message, + void *data ) +{ + vips_error( "im_openslide2vips", "%s", message ); +} + /* openslide format adds no new members. */ typedef VipsFormat VipsFormatOpenslide; @@ -400,6 +409,10 @@ vips_format_openslide_class_init( VipsFormatOpenslideClass *class ) * doesn't understand, so this should be safe. */ format_class->priority = 100; + + g_log_set_handler( "Openslide", + G_LOG_LEVEL_CRITICAL | G_LOG_LEVEL_WARNING, + error_handler, NULL ); } static void