summaryrefslogtreecommitdiff
path: root/tests/jpeg/bug00338.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/jpeg/bug00338.c')
-rw-r--r--tests/jpeg/bug00338.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/jpeg/bug00338.c b/tests/jpeg/bug00338.c
new file mode 100644
index 0000000..7874df2
--- /dev/null
+++ b/tests/jpeg/bug00338.c
@@ -0,0 +1,46 @@
+/**
+ * Regression test for <https://github.com/libgd/libgd/issues/338>
+ *
+ * We're testing that reading a JPEG image with gdImageCreateFromJpeg()
+ * raises a GD_WARNING for the fatal libjpeg error, but not a GD_ERROR.
+ * We also make sure, that the fatal libjpeg error is actually reported.
+ *
+ * See also ../png/bug00338.c
+ */
+
+#include <string.h>
+#include "gd.h"
+#include "gd_errors.h"
+#include "gdtest.h"
+
+#define MSG "gd-jpeg: JPEG library reports unrecoverable error: %s"
+
+static int error_handler_called = 0;
+
+static void error_handler(int priority, const char *format, va_list args)
+{
+ if (!strcmp(format, MSG)) {
+ gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority);
+ error_handler_called = 1;
+ }
+}
+
+int main()
+{
+ gdImagePtr im;
+ FILE *fp;
+
+ gdSetErrorMethod(error_handler);
+
+ im = gdImageCreateTrueColor(10, 10);
+ fp = gdTestTempFp();
+ gdImagePng(im, fp);
+ gdImageDestroy(im);
+
+ im = gdImageCreateFromJpeg(fp);
+ gdTestAssert(im == NULL);
+
+ gdTestAssert(error_handler_called);
+
+ return gdNumFailures();
+}