Browse Source

Merge remote-tracking branch 'jasonrose/master' into memleaks

v1.x
King Koopa 12 years ago
parent
commit
4b17698254
  1. 10
      src/Image.cc
  2. 8
      src/JPEGStream.h

10
src/Image.cc

@ -346,6 +346,11 @@ Image::loaded() {
if (onload != NULL) { if (onload != NULL) {
onload->Call(0, NULL); onload->Call(0, NULL);
delete onload; delete onload;
onload = NULL;
}
if (onerror != NULL) {
delete onerror;
onerror = NULL;
} }
} }
@ -360,6 +365,11 @@ Image::error(Local<Value> err) {
Local<Value> argv[1] = { err }; Local<Value> argv[1] = { err };
onerror->Call(1, argv); onerror->Call(1, argv);
delete onerror; delete onerror;
onerror = NULL;
}
if (onload != NULL) {
delete onload;
onload = NULL;
} }
} }

8
src/JPEGStream.h

@ -95,6 +95,13 @@ jpeg_closure_dest(j_compress_ptr cinfo, closure_t * closure, int bufsize){
cinfo->dest->free_in_buffer = dest->bufsize; cinfo->dest->free_in_buffer = dest->bufsize;
} }
void
jpeg_free_custom_allocations(j_compress_ptr cinfo){
closure_destination_mgr * dest;
dest = (closure_destination_mgr *) cinfo->dest;
free(dest->buffer);
}
void void
write_to_jpeg_stream(cairo_surface_t *surface, int bufsize, int quality, bool progressive, closure_t *closure){ write_to_jpeg_stream(cairo_surface_t *surface, int bufsize, int quality, bool progressive, closure_t *closure){
int w = cairo_image_surface_get_width(surface); int w = cairo_image_surface_get_width(surface);
@ -136,6 +143,7 @@ write_to_jpeg_stream(cairo_surface_t *surface, int bufsize, int quality, bool pr
sl++; sl++;
} }
free(dst); free(dst);
jpeg_free_custom_allocations(&cinfo);
jpeg_finish_compress(&cinfo); jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo); jpeg_destroy_compress(&cinfo);
} }

Loading…
Cancel
Save