fprintf(stderr, "nspng severe error:  jmpbuf not recoverable.\n"); fflush(stderr); PR_ASSERT(ipng_p != NULL);
PRINTF("nspng severe error:  jmpbuf not recoverable.\n"); FLUSH(); PR_ASSERT(ipng_p != NULL);
il_png_error_handler(png_structp png_ptr, png_const_charp msg){    ipng_structp ipng_p;    /* This function, aside from the extra step of retrieving the "error     * pointer" (below) and the fact that it exists within the application     * rather than within libpng, is essentially identical to libpng's     * default error handler.  The second point is critical:  since both     * setjmp() and longjmp() are called from the same code, they are     * guaranteed to have compatible notions of how big a jmp_buf is,     * regardless of whether _BSD_SOURCE or anything else has (or has not)     * been defined.  Adapted from readpng2_error_handler() in "PNG: The     * Definitive Guide" (O'Reilly, 1999). */    fprintf(stderr, "nspng libpng error: %s\n", msg);    fflush(stderr);    ipng_p = (ipng_structp)png_get_error_ptr(png_ptr);    if (ipng_p == NULL) {            /* we are completely hosed now */        fprintf(stderr, "nspng severe error:  jmpbuf not recoverable.\n");        fflush(stderr);        PR_ASSERT(ipng_p != NULL);   /* instead of exit(99); */    }    longjmp(ipng_p->jmpbuf, 1);}