libc is complaining:
03-28 00:53:21.293: A/libc(26952): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1), thread 26967 (engame.pathogen)
struct jpeg_decompress_struct cinfo;
jpeg_error_mgr jerr;
if (!source_init(strFileName))
{
LOGE("Error opening jpeg %s", strFileName);
return NULL;
}
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo);
jpegSource.pub.init_source = init_sourceFunc;
jpegSource.pub.fill_input_buffer = fill_input_bufferFunc;
jpegSource.pub.skip_input_data = skip_input_dataFunc;
jpegSource.pub.resync_to_restart = jpeg_resync_to_restart;
jpegSource.pub.term_source = term_sourceFunc;
jpegSource.pub.next_input_byte = NULL;
jpegSource.pub.bytes_in_buffer = 0;
cinfo.src = (struct jpeg_source_mgr*)&jpegSource;
//LOGI("JPG %s 3", strFileName);
jpeg_read_header(&cinfo, TRUE);
#define JPEG_BUFFER_SIZE (8 << 10)
typedef struct
{
struct jpeg_source_mgr pub;
} JPEGSource;
static char jpegBuffer[JPEG_BUFFER_SIZE];
static JPEGSource jpegSource;
static void init_sourceFunc(j_decompress_ptr cinfo)
{
((JPEGSource*)cinfo->src)->pub.bytes_in_buffer = 0;
}
static boolean fill_input_bufferFunc(j_decompress_ptr cinfo)
{
JPEGSource *src = (JPEGSource*)cinfo->src;
src->pub.bytes_in_buffer = source_read(jpegBuffer);
src->pub.next_input_byte = (const unsigned char*)jpegBuffer;
return TRUE;
}
void skip_input_dataFunc(j_decompress_ptr cinfo, long num_bytes)
{
JPEGSource *src = (JPEGSource*)cinfo->src;
if (num_bytes > 0)
{
source_seek(num_bytes);
if (num_bytes > src->pub.bytes_in_buffer) src->pub.bytes_in_buffer = 0;
else
{
src->pub.next_input_byte += num_bytes;
src->pub.bytes_in_buffer -= num_bytes;
}
}
}
void term_sourceFunc(j_decompress_ptr cinfo)
{
}
bool source_init(const char *filename)
{
g_src = CFile(filename);
if(!g_src.mFile)
return false;
return true;
}
void source_close()
{
g_src.close();
}
int source_read(char* buffer)
{
return g_src.read((void*)buffer, JPEG_BUFFER_SIZE);
}
void source_seek(int num)
{
g_src.seek(num);
}