Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/azatoth/minidlna.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Maggard <jmaggard@users.sourceforge.net>2009-03-28 01:22:23 +0300
committerJustin Maggard <jmaggard@users.sourceforge.net>2009-03-28 01:22:23 +0300
commit5a30bc3caad42b0156ec53015d77e5b9b271f6e3 (patch)
treeda150433aebf92b51f4a7aafb047e88bac8a86a1 /image_utils.c
parentbbc88bcaefbcd4c69d6f0afa41f711b55abcb8a3 (diff)
* Fix bug with bad album art.
Diffstat (limited to 'image_utils.c')
-rw-r--r--image_utils.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/image_utils.c b/image_utils.c
index 3cf2ad4..dfab925 100644
--- a/image_utils.c
+++ b/image_utils.c
@@ -31,6 +31,7 @@
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
+#include <setjmp.h>
#include <jpeglib.h>
#include "image_utils.h"
@@ -175,11 +176,13 @@ jpeg_memory_src(j_decompress_ptr cinfo, const unsigned char * buffer, size_t buf
src->pub.bytes_in_buffer = bufsize;
}
+jmp_buf setjmp_buffer;
/* Don't exit on error like libjpeg likes to do */
static void
libjpeg_error_handler(j_common_ptr cinfo)
{
cinfo->err->output_message(cinfo);
+ longjmp(setjmp_buffer, 1);
return;
}
@@ -258,6 +261,13 @@ image_new_from_jpeg(const char * path, int is_file, const char * buf, int size)
{
jpeg_memory_src(&cinfo, (const unsigned char *)buf, size);
}
+ if( setjmp(setjmp_buffer) )
+ {
+ jpeg_destroy_decompress(&cinfo);
+ if( is_file && file )
+ fclose(file);
+ return NULL;
+ }
jpeg_read_header(&cinfo, TRUE);
cinfo.do_fancy_upsampling = FALSE;
cinfo.do_block_smoothing = FALSE;