Enlightenment CVS committal Author : raster Project : e17 Module : libs/epeg
Dir : e17/libs/epeg/src/lib Modified Files: epeg_main.c Log Message: fix segv... and other fidgety things. =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/epeg/src/lib/epeg_main.c,v retrieving revision 1.15 retrieving revision 1.16 diff -u -3 -r1.15 -r1.16 --- epeg_main.c 15 Sep 2005 15:53:10 -0000 1.15 +++ epeg_main.c 7 Feb 2006 02:20:34 -0000 1.16 @@ -38,7 +38,15 @@ Epeg_Image *im; im = calloc(1, sizeof(Epeg_Image)); + if (!im) return NULL; + im->in.file = strdup(file); + if (!im->in.file) + { + free(im); + return NULL; + } + im->in.f = fopen(im->in.file, "rb"); if (!im->in.f) { @@ -68,12 +76,7 @@ Epeg_Image *im; im = calloc(1, sizeof(Epeg_Image)); - - if (!im) - { - epeg_close(im); - return NULL; - } + if (!im) return NULL; im->out.quality = 75; im->in.mem.data = (unsigned char **) data; @@ -693,7 +696,6 @@ { im->out.mem.data = data; im->out.mem.size = size; - im->in.file = NULL; im->out.file = NULL; } @@ -715,9 +717,8 @@ epeg_encode(Epeg_Image *im) { int ret; - if ((ret = _epeg_decode(im)) != 0) { + if ((ret = _epeg_decode(im)) != 0) return (ret == 2 ? 4 : 3); - } if (_epeg_scale(im) != 0) return 1; if (_epeg_encode(im) != 0) @@ -755,23 +756,22 @@ void epeg_close(Epeg_Image *im) { - if (im != NULL) { - if (im->pixels) free(im->pixels); - if (im->lines) free(im->lines); - if (im->in.file) free(im->in.file); - if (!im->in.file) free(im->in.jinfo.src); - if (im->in.f || im->in.mem.data) jpeg_destroy_decompress(&(im->in.jinfo)); - if (im->in.f) fclose(im->in.f); - if (im->in.comment) free(im->in.comment); - if (im->in.thumb_info.uri) free(im->in.thumb_info.uri); - if (im->in.thumb_info.mime) free(im->in.thumb_info.mime); - if (im->out.file) free(im->out.file); - if (!im->out.file) free(im->out.jinfo.dest); - if (im->out.f || im->in.mem.data) jpeg_destroy_compress(&(im->out.jinfo)); - if (im->out.f) fclose(im->out.f); - if (im->out.comment) free(im->out.comment); - free(im); - } + if (!im) return; + if (im->pixels) free(im->pixels); + if (im->lines) free(im->lines); + if (im->in.file) free(im->in.file); + if (!im->in.file) free(im->in.jinfo.src); + if (im->in.f || im->in.mem.data) jpeg_destroy_decompress(&(im->in.jinfo)); + if (im->in.f) fclose(im->in.f); + if (im->in.comment) free(im->in.comment); + if (im->in.thumb_info.uri) free(im->in.thumb_info.uri); + if (im->in.thumb_info.mime) free(im->in.thumb_info.mime); + if (im->out.file) free(im->out.file); + if (!im->out.file) free(im->out.jinfo.dest); + if (im->out.f || im->in.mem.data) jpeg_destroy_compress(&(im->out.jinfo)); + if (im->out.f) fclose(im->out.f); + if (im->out.comment) free(im->out.comment); + free(im); } static Epeg_Image * @@ -1229,65 +1229,75 @@ return; } - /* Source manager methods */ -METHODDEF(void) _jpeg_decompress_error_exit(j_common_ptr cinfo) +METHODDEF(void) +_jpeg_decompress_error_exit(j_common_ptr cinfo) { } -METHODDEF(void) _jpeg_init_source(j_decompress_ptr cinfo) +METHODDEF(void) +_jpeg_init_source(j_decompress_ptr cinfo) { } -METHODDEF(boolean) _jpeg_fill_input_buffer(j_decompress_ptr cinfo) +METHODDEF(boolean) +_jpeg_fill_input_buffer(j_decompress_ptr cinfo) { - WARNMS(cinfo, JWRN_JPEG_EOF); - - /* Insert a fake EOI marker */ - cinfo->src->next_input_byte = fake_EOI; - cinfo->src->bytes_in_buffer = sizeof(fake_EOI); - - return TRUE; + WARNMS(cinfo, JWRN_JPEG_EOF); + + /* Insert a fake EOI marker */ + cinfo->src->next_input_byte = fake_EOI; + cinfo->src->bytes_in_buffer = sizeof(fake_EOI); + + return TRUE; } -METHODDEF(void) _jpeg_skip_input_data(j_decompress_ptr cinfo, long num_bytes) +METHODDEF(void) +_jpeg_skip_input_data(j_decompress_ptr cinfo, long num_bytes) { - if(num_bytes > (long) (cinfo)->src->bytes_in_buffer) - ERREXIT(cinfo, 0); - - (cinfo)->src->next_input_byte += num_bytes; - (cinfo)->src->bytes_in_buffer -= num_bytes; + if (num_bytes > (long)(cinfo)->src->bytes_in_buffer) + ERREXIT(cinfo, 0); + + (cinfo)->src->next_input_byte += num_bytes; + (cinfo)->src->bytes_in_buffer -= num_bytes; } -METHODDEF(void) _jpeg_term_source(j_decompress_ptr cinfo) +METHODDEF(void) +_jpeg_term_source(j_decompress_ptr cinfo) { } /* Destination manager methods */ -METHODDEF(void) _jpeg_init_destination(j_compress_ptr cinfo) +METHODDEF(void) +_jpeg_init_destination(j_compress_ptr cinfo) { } -METHODDEF(boolean) _jpeg_empty_output_buffer (j_compress_ptr cinfo) +METHODDEF(boolean) +_jpeg_empty_output_buffer (j_compress_ptr cinfo) { } -METHODDEF(void) _jpeg_term_destination (j_compress_ptr cinfo) +METHODDEF(void) +_jpeg_term_destination (j_compress_ptr cinfo) { } -METHODDEF(void) _emit_message (j_common_ptr cinfo, int msg_level) +METHODDEF(void) +_emit_message (j_common_ptr cinfo, int msg_level) { } -METHODDEF(void) _output_message (j_common_ptr cinfo) +METHODDEF(void) +_output_message (j_common_ptr cinfo) { } -METHODDEF(void) _format_message (j_common_ptr cinfo, char * buffer) +METHODDEF(void) +_format_message (j_common_ptr cinfo, char * buffer) { } ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs