tiny cleanup
make the code for error during jpeg buffer write a little cleaner -- rather than calling the jpeg term method ourselves, have a separate destroy function for the write buffer
This commit is contained in:
parent
ce2ec4cf01
commit
eea8b61f3f
@ -2,8 +2,9 @@
|
|||||||
- stop window new/free cycling .. faster zoom out on large images in nip2
|
- stop window new/free cycling .. faster zoom out on large images in nip2
|
||||||
- fix some compiler warnings
|
- fix some compiler warnings
|
||||||
- remove the 64-image limit on bandary operations
|
- remove the 64-image limit on bandary operations
|
||||||
- better version date, thanks bmwiedemann
|
- better version date [bmwiedemann]
|
||||||
- bump wrapper script version, thanks bgilbert
|
- bump wrapper script version [bgilbert]
|
||||||
|
- fix a memleak with an error during jpeg buffer write [lovell]
|
||||||
|
|
||||||
15/4/17 started 8.6.0
|
15/4/17 started 8.6.0
|
||||||
- supports fits images with leading non-image HDUs, thanks benepo
|
- supports fits images with leading non-image HDUs, thanks benepo
|
||||||
|
@ -84,6 +84,8 @@
|
|||||||
* - move exif handling out to exif.c
|
* - move exif handling out to exif.c
|
||||||
* 27/2/17
|
* 27/2/17
|
||||||
* - use dbuf for memory output
|
* - use dbuf for memory output
|
||||||
|
* 19/12/17 Lovell
|
||||||
|
* - fix a leak with an error during buffer output
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -618,6 +620,8 @@ write_vips( Write *write, int qfac, const char *profile,
|
|||||||
if( setjmp( write->eman.jmp ) )
|
if( setjmp( write->eman.jmp ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
|
/* This should obly be called on a successful write.
|
||||||
|
*/
|
||||||
jpeg_finish_compress( &write->cinfo );
|
jpeg_finish_compress( &write->cinfo );
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
@ -725,7 +729,21 @@ init_destination( j_compress_ptr cinfo )
|
|||||||
empty_output_buffer( cinfo );
|
empty_output_buffer( cinfo );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Cleanup. Copy the set of blocks out as a big lump.
|
/* Free the buffer writer.
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
buf_destroy( j_compress_ptr cinfo )
|
||||||
|
{
|
||||||
|
if( cinfo->dest ) {
|
||||||
|
OutputBuffer *buf = (OutputBuffer *) cinfo->dest;
|
||||||
|
|
||||||
|
vips_dbuf_destroy( &buf->dbuf );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Cleanup. Copy the set of blocks out as a big lump. This is only called by
|
||||||
|
* libjpeg on successful write --- you must call buf_destroy() explicitly to
|
||||||
|
* release resources.
|
||||||
*/
|
*/
|
||||||
METHODDEF(void)
|
METHODDEF(void)
|
||||||
term_destination( j_compress_ptr cinfo )
|
term_destination( j_compress_ptr cinfo )
|
||||||
@ -798,7 +816,7 @@ vips__jpeg_write_buffer( VipsImage *in,
|
|||||||
/* Make jpeg compression object.
|
/* Make jpeg compression object.
|
||||||
*/
|
*/
|
||||||
if( setjmp( write->eman.jmp ) ) {
|
if( setjmp( write->eman.jmp ) ) {
|
||||||
/* Here for longjmp() from new_error_exit().
|
/* Here for longjmp() from new_error_exit() during setup.
|
||||||
*/
|
*/
|
||||||
write_destroy( write );
|
write_destroy( write );
|
||||||
|
|
||||||
@ -810,19 +828,18 @@ vips__jpeg_write_buffer( VipsImage *in,
|
|||||||
*/
|
*/
|
||||||
buf_dest( &write->cinfo, obuf, olen );
|
buf_dest( &write->cinfo, obuf, olen );
|
||||||
|
|
||||||
/* Convert!
|
/* Convert! Write errors come back here as an error return.
|
||||||
*/
|
*/
|
||||||
if( write_vips( write,
|
if( write_vips( write,
|
||||||
Q, profile, optimize_coding, progressive, strip, no_subsample,
|
Q, profile, optimize_coding, progressive, strip, no_subsample,
|
||||||
trellis_quant, overshoot_deringing, optimize_scans,
|
trellis_quant, overshoot_deringing, optimize_scans,
|
||||||
quant_table ) ) {
|
quant_table ) ) {
|
||||||
term_destination( &write->cinfo );
|
buf_destroy( &write->cinfo );
|
||||||
VIPS_FREE( *obuf );
|
|
||||||
*olen = 0;
|
|
||||||
write_destroy( write );
|
write_destroy( write );
|
||||||
|
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
buf_destroy( &write->cinfo );
|
||||||
write_destroy( write );
|
write_destroy( write );
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
|
Loading…
Reference in New Issue
Block a user