Blame tests/jpeg/bug00338.c

Packit ed3af9
/**
Packit ed3af9
 * Regression test for <https://github.com/libgd/libgd/issues/338>
Packit ed3af9
 *
Packit ed3af9
 * We're testing that reading a JPEG image with gdImageCreateFromJpeg()
Packit ed3af9
 * raises a GD_WARNING for the fatal libjpeg error, but not a GD_ERROR.
Packit ed3af9
 * We also make sure, that the fatal libjpeg error is actually reported.
Packit ed3af9
 *
Packit ed3af9
 * See also ../png/bug00338.c
Packit ed3af9
 */
Packit ed3af9

Packit ed3af9

Packit ed3af9
#include <string.h>
Packit ed3af9
#include "gd.h"
Packit ed3af9
#include "gd_errors.h"
Packit ed3af9
#include "gdtest.h"
Packit ed3af9

Packit ed3af9

Packit ed3af9
#define MSG "gd-jpeg: JPEG library reports unrecoverable error: %s"
Packit ed3af9

Packit ed3af9

Packit ed3af9
static int error_handler_called = 0;
Packit ed3af9

Packit ed3af9

Packit ed3af9
static void error_handler(int priority, const char *format, va_list args)
Packit ed3af9
{
Packit ed3af9
    if (!strcmp(format, MSG)) {
Packit ed3af9
        gdTestAssertMsg(priority == GD_WARNING, "expected priority %d, but got %d", GD_WARNING, priority);
Packit ed3af9
        error_handler_called = 1;
Packit ed3af9
    }
Packit ed3af9
}
Packit ed3af9

Packit ed3af9

Packit ed3af9
int main()
Packit ed3af9
{
Packit ed3af9
    gdImagePtr im;
Packit ed3af9
    FILE *fp;
Packit ed3af9

Packit ed3af9
    gdSetErrorMethod(error_handler);
Packit ed3af9

Packit ed3af9
    im = gdImageCreateTrueColor(10, 10);
Packit ed3af9
    fp = gdTestTempFp();
Packit ed3af9
    gdImagePng(im, fp);
Packit ed3af9
    gdImageDestroy(im);
Packit ed3af9

Packit ed3af9
    im = gdImageCreateFromJpeg(fp);
Packit ed3af9
    gdTestAssert(im == NULL);
Packit ed3af9

Packit ed3af9
    gdTestAssert(error_handler_called);
Packit ed3af9

Packit ed3af9
    return gdNumFailures();
Packit ed3af9
}