summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-06-17 00:58:04 +0200
committerCarl Hetherington <cth@carlh.net>2020-06-17 00:58:04 +0200
commitcb71ba31eaf66b4e451fb68d186097c4b8b71d23 (patch)
tree43ec23308059f37969e961f4bf8f29aeb5837c7e /src
parent805d7c718cf5d0c833cec9e38b2061bea6a649d2 (diff)
Tidy up and fix some small memory leaks.
Diffstat (limited to 'src')
-rw-r--r--src/j2k.cc15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/j2k.cc b/src/j2k.cc
index 7854e683..f2335f08 100644
--- a/src/j2k.cc
+++ b/src/j2k.cc
@@ -307,6 +307,8 @@ dcp::compress_j2k (shared_ptr<const OpenJPEGImage> xyz, int bandwidth, int frame
opj_stream_t* stream = opj_stream_default_create (OPJ_FALSE);
if (!stream) {
+ opj_destroy_codec (encoder);
+ free (parameters.cp_comment);
throw MiscError ("could not create JPEG2000 stream");
}
@@ -316,6 +318,9 @@ dcp::compress_j2k (shared_ptr<const OpenJPEGImage> xyz, int bandwidth, int frame
opj_stream_set_user_data (stream, buffer, write_free_function);
if (!opj_start_compress (encoder, xyz->opj_image(), stream)) {
+ opj_stream_destroy (stream);
+ opj_destroy_codec (encoder);
+ free (parameters.cp_comment);
if ((errno & 0x61500) == 0x61500) {
/* We've had one of the magic error codes from our patched openjpeg */
boost::throw_exception (StartCompressionError (errno & 0xff));
@@ -325,22 +330,24 @@ dcp::compress_j2k (shared_ptr<const OpenJPEGImage> xyz, int bandwidth, int frame
}
if (!opj_encode (encoder, stream)) {
- opj_destroy_codec (encoder);
opj_stream_destroy (stream);
+ opj_destroy_codec (encoder);
+ free (parameters.cp_comment);
throw MiscError ("JPEG2000 encoding failed");
}
if (!opj_end_compress (encoder, stream)) {
- opj_destroy_codec (encoder);
opj_stream_destroy (stream);
+ opj_destroy_codec (encoder);
+ free (parameters.cp_comment);
throw MiscError ("could not end JPEG2000 encoding");
}
Data enc (buffer->data ());
- free (parameters.cp_comment);
- opj_destroy_codec (encoder);
opj_stream_destroy (stream);
+ opj_destroy_codec (encoder);
+ free (parameters.cp_comment);
return enc;
}