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