19f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 29f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jerror.c 39f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 49f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Copyright (C) 1991-1998, Thomas G. Lane. 59f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This file is part of the Independent JPEG Group's software. 69f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * For conditions of distribution and use, see the accompanying README file. 79f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 89f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This file contains simple error-reporting and trace-message routines. 99f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These are suitable for Unix-like systems and others where writing to 109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * stderr is the right thing to do. Many applications will want to replace 119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * some or all of these routines. 129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * If you define USE_WINDOWS_MESSAGEBOX in jconfig.h or in the makefile, 149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * you get a Windows-specific hack to display error messages in a dialog box. 159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * It ain't much, but it beats dropping error messages into the bit bucket, 169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * which is what happens to output to stderr under most Windows C compilers. 179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * These routines are used by both the compression and decompression code. 199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* this is not a core library module, so it doesn't define JPEG_INTERNALS */ 229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jinclude.h" 239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jpeglib.h" 249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jversion.h" 259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jerror.h" 269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef USE_WINDOWS_MESSAGEBOX 289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include <windows.h> 299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifndef EXIT_FAILURE /* define exit() codes if not provided */ 329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define EXIT_FAILURE 1 339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Create the message string table. 389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * We do this from the master message list in jerror.h by re-reading 399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * jerror.h with a suitable definition for macro JMESSAGE. 409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The message table is made an external symbol just in case any applications 419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * want to refer to it directly. 429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef NEED_SHORT_EXTERNAL_NAMES 459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define jpeg_std_message_table jMsgTable 469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#define JMESSAGE(code,string) string , 499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectconst char * const jpeg_std_message_table[] = { 519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#include "jerror.h" 529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project NULL 539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project}; 549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Error exit handler: must not return to caller. 589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Applications may override this if they want to get control back after 609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * an error. Typically one would longjmp somewhere instead of exiting. 619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The setjmp buffer can be made a private field within an expanded error 629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * handler object. Note that the info needed to generate an error message 639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * is stored in the error object, so you can generate the message now or 649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * later, at your convenience. 659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * You should make sure that the JPEG object is cleaned up (with jpeg_abort 669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * or jpeg_destroy) at some point. 679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectMETHODDEF(void) 709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecterror_exit (j_common_ptr cinfo) 719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project{ 729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Always display the message */ 739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (*cinfo->err->output_message) (cinfo); 749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Let the memory manager delete any temp files before we die */ 769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project jpeg_destroy(cinfo); 779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project exit(EXIT_FAILURE); 799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} 809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Actual output of an error or trace message. 849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Applications may override this method to send JPEG messages somewhere 859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * other than stderr. 869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * On Windows, printing to stderr is generally completely useless, 889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * so we provide optional code to produce an error-dialog popup. 899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Most Windows applications will still prefer to override this routine, 909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * but if they don't, it'll do something at least marginally useful. 919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * NOTE: to use the library in an environment that doesn't support the 939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * C stdio library, you may have to delete the call to fprintf() entirely, 949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * not just not use this routine. 959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectMETHODDEF(void) 989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectoutput_message (j_common_ptr cinfo) 999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project{ 1009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project char buffer[JMSG_LENGTH_MAX]; 1019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Create the message */ 1039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (*cinfo->err->format_message) (cinfo, buffer); 1049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#ifdef USE_WINDOWS_MESSAGEBOX 1069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Display it in a message dialog box */ 1079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project MessageBox(GetActiveWindow(), buffer, "JPEG Library Error", 1089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project MB_OK | MB_ICONERROR); 1099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#else 1109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Send it to stderr, adding a newline */ 1119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fprintf(stderr, "%s\n", buffer); 1129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#endif 1139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} 1149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 1179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Decide whether to emit a trace or warning message. 1189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * msg_level is one of: 1199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * -1: recoverable corrupt-data warning, may want to abort. 1209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 0: important advisory messages (always display to user). 1219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 1: first level of tracing detail. 1229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 2,3,...: successively more detailed tracing messages. 1239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * An application might override this method if it wanted to abort on warnings 1249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * or change the policy about which messages to display. 1259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectMETHODDEF(void) 1289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectemit_message (j_common_ptr cinfo, int msg_level) 1299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project{ 1309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_error_mgr * err = cinfo->err; 1319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if (msg_level < 0) { 1339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* It's a warning message. Since corrupt files may generate many warnings, 1349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * the policy implemented here is to show only the first warning, 1359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * unless trace_level >= 3. 1369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if (err->num_warnings == 0 || err->trace_level >= 3) 1389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (*err->output_message) (cinfo); 1399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Always count warnings in num_warnings. */ 1409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->num_warnings++; 1419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project } else { 1429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* It's a trace message. Show it if trace_level >= msg_level. */ 1439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if (err->trace_level >= msg_level) 1449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project (*err->output_message) (cinfo); 1459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project } 1469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} 1479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 1509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Format a message string for the most recent JPEG error or message. 1519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * The message is stored into buffer, which should be at least JMSG_LENGTH_MAX 1529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * characters. Note that no '\n' character is added to the string. 1539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Few applications should need to override this method. 1549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 1559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectMETHODDEF(void) 1579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectformat_message (j_common_ptr cinfo, char * buffer) 1589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project{ 1599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project struct jpeg_error_mgr * err = cinfo->err; 1609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project int msg_code = err->msg_code; 1619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project const char * msgtext = NULL; 1629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project const char * msgptr; 1639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project char ch; 1649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project boolean isstring; 1659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Look up message string in proper table */ 1679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if (msg_code > 0 && msg_code <= err->last_jpeg_message) { 1689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project msgtext = err->jpeg_message_table[msg_code]; 1699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project } else if (err->addon_message_table != NULL && 1709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project msg_code >= err->first_addon_message && 1719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project msg_code <= err->last_addon_message) { 1729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project msgtext = err->addon_message_table[msg_code - err->first_addon_message]; 1739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project } 1749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Defend against bogus message number */ 1769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if (msgtext == NULL) { 1779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->msg_parm.i[0] = msg_code; 1789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project msgtext = err->jpeg_message_table[0]; 1799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project } 1809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Check for string parameter, as indicated by %s in the message text */ 1829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project isstring = FALSE; 1839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project msgptr = msgtext; 1849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project while ((ch = *msgptr++) != '\0') { 1859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if (ch == '%') { 1869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if (*msgptr == 's') isstring = TRUE; 1879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project break; 1889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project } 1899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project } 1909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Format the message into the passed buffer */ 1929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if (isstring) 1939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project sprintf(buffer, msgtext, err->msg_parm.s); 1949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 1959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project sprintf(buffer, msgtext, 1969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->msg_parm.i[0], err->msg_parm.i[1], 1979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->msg_parm.i[2], err->msg_parm.i[3], 1989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->msg_parm.i[4], err->msg_parm.i[5], 1999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->msg_parm.i[6], err->msg_parm.i[7]); 2009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} 2019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 2049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Reset error state variables at start of a new image. 2059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * This is called during compression startup to reset trace/error 2069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * processing to default state, without losing any application-specific 2079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * method pointers. An application might possibly want to override 2089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * this method if it has additional error processing state. 2099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectMETHODDEF(void) 2129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectreset_error_mgr (j_common_ptr cinfo) 2139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project{ 2149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project cinfo->err->num_warnings = 0; 2159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* trace_level is not reset since it is an application-supplied parameter */ 2169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project cinfo->err->msg_code = 0; /* may be useful as a flag for "no error" */ 2179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} 2189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project/* 2219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Fill in the standard error-handling methods in a jpeg_error_mgr object. 2229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * Typical call is: 2239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * struct jpeg_compress_struct cinfo; 2249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * struct jpeg_error_mgr err; 2259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * 2269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * cinfo.err = jpeg_std_error(&err); 2279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project * after which the application may override some of the methods. 2289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project */ 2299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectGLOBAL(struct jpeg_error_mgr *) 2319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectjpeg_std_error (struct jpeg_error_mgr * err) 2329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project{ 2339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->error_exit = error_exit; 2349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->emit_message = emit_message; 2359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->output_message = output_message; 2369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->format_message = format_message; 2379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->reset_error_mgr = reset_error_mgr; 2389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->trace_level = 0; /* default = no tracing */ 2409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->num_warnings = 0; /* no warnings emitted yet */ 2419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->msg_code = 0; /* may be useful as a flag for "no error" */ 2429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project /* Initialize message table pointers */ 2449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->jpeg_message_table = jpeg_std_message_table; 2459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->last_jpeg_message = (int) JMSG_LASTMSGCODE - 1; 2469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->addon_message_table = NULL; 2489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->first_addon_message = 0; /* for safety */ 2499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project err->last_addon_message = 0; 2509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project return err; 2529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project} 253