SOURCES: ekg-jpeg.patch (NEW) - libjpeg errors handling fix (from ...

qboosh qboosh at pld-linux.org
Mon Feb 20 00:15:28 CET 2006


Author: qboosh                       Date: Sun Feb 19 23:15:28 2006 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- libjpeg errors handling fix (from CVS)

---- Files affected:
SOURCES:
   ekg-jpeg.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/ekg-jpeg.patch
diff -u /dev/null SOURCES/ekg-jpeg.patch:1.1
--- /dev/null	Mon Feb 20 00:15:28 2006
+++ SOURCES/ekg-jpeg.patch	Mon Feb 20 00:15:22 2006
@@ -0,0 +1,78 @@
+--- ekg-1.6/src/events.c.orig	2005-10-09 12:50:15.000000000 +0200
++++ ekg-1.6/src/events.c	2006-02-20 00:04:49.218225000 +0100
+@@ -33,6 +33,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
++#include <setjmp.h>
+ #include <unistd.h>
+ 
+ #include "commands.h"
+@@ -1515,6 +1516,21 @@
+ 	return NULL;
+ }
+ 
++#ifdef HAVE_LIBJPEG
++
++struct ekg_jpeg_error_mgr {
++	struct jpeg_error_mgr pub;
++	jmp_buf setjmp_buffer;
++};
++
++void ekg_jpeg_error_exit(j_common_ptr j)
++{
++	struct ekg_jpeg_error_mgr *e = (struct ekg_jpeg_error_mgr *) j->err;
++	/* Return control to the setjmp point */
++	longjmp(e->setjmp_buffer, 1);
++}
++#endif
++
+ /*
+  * handle_token()
+  *
+@@ -1569,7 +1585,7 @@
+ #ifdef HAVE_LIBJPEG
+ 	if (config_display_token) {
+ 		struct jpeg_decompress_struct j;
+-		struct jpeg_error_mgr e;
++		struct ekg_jpeg_error_mgr e;
+ 		JSAMPROW buf[1];
+ 		int size;
+ 		char *token, *tmp;
+@@ -1581,7 +1597,18 @@
+ 			goto fail;
+ 		}
+ 
+-		j.err = jpeg_std_error(&e);
++		j.err = jpeg_std_error(&e.pub);
++		e.pub.error_exit = ekg_jpeg_error_exit;
++		/* Establish the setjmp return context for ekg_jpeg_error_exit to use. */
++		if (setjmp(e.setjmp_buffer)) {
++			char buf[JMSG_LENGTH_MAX];
++			/* If we ended up over here, then it means some call below called longjmp. */
++			(e.pub.format_message)((j_common_ptr)&j, buf);
++			print("token_failed", buf);
++			jpeg_destroy_decompress(&j);
++			fclose(f);
++			goto fail;
++		}
+ 		jpeg_create_decompress(&j);
+ 		jpeg_stdio_src(&j, f);
+ 		jpeg_read_header(&j, TRUE);
+@@ -1623,7 +1650,7 @@
+ 		
+ 		unlink(file);
+ 	} else
+-#else	/* HAVE_LIBJPEG */
++#endif	/* HAVE_LIBJPEG */
+ 	{
+ 		char *file2 = saprintf("%s.jpg", file);
+ 
+@@ -1634,7 +1661,6 @@
+ 
+ 		xfree(file2);
+ 	}
+-#endif	/* HAVE_LIBJPEG */
+ 
+ #else	/* HAVE_MKSTEMP */
+ 	print("token_unsupported");
================================================================


More information about the pld-cvs-commit mailing list