summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMickael Savinaud <savmickael@users.noreply.github.com>2011-10-20 13:18:52 +0000
committerMickael Savinaud <savmickael@users.noreply.github.com>2011-10-20 13:18:52 +0000
commitb8214e260cfafa896bbc132aff13b01d05850773 (patch)
tree571f4046d8745eb4c0730eb6345e4fa6307850f4
parent45d813b62ca9ab7c51e282050f9535d69b1b6d8b (diff)
WIP: remove memory leak about new jp2_read_marker function
-rw-r--r--CHANGES1
-rw-r--r--libopenjpeg/j2k.c1
-rw-r--r--libopenjpeg/jp2.c22
3 files changed, 24 insertions, 0 deletions
diff --git a/CHANGES b/CHANGES
index 09d6ee51..98ba1377 100644
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,7 @@ What's New for OpenJPEG
+ : added
October 20, 2011
+* [mickael] WIP: remove memory leak about new jp2_read_marker function
* [mickael] WIP: remove previous commit about memory leak with ppm read function
* [mickael] WIP: solve memory leak with ppm read function
diff --git a/libopenjpeg/j2k.c b/libopenjpeg/j2k.c
index e3e4c498..263713b7 100644
--- a/libopenjpeg/j2k.c
+++ b/libopenjpeg/j2k.c
@@ -7716,6 +7716,7 @@ opj_bool j2k_decode_tiles ( opj_j2k_v2_t *p_j2k,
&l_go_on,
p_stream,
p_manager)) {
+ opj_free(l_current_data);
return OPJ_FALSE;
}
diff --git a/libopenjpeg/jp2.c b/libopenjpeg/jp2.c
index ed7c79f6..ee913140 100644
--- a/libopenjpeg/jp2.c
+++ b/libopenjpeg/jp2.c
@@ -2570,11 +2570,33 @@ void jp2_destroy(opj_jp2_v2_t *jp2)
}
if (jp2->color.jp2_cdef) {
+ if (jp2->color.jp2_cdef->info) {
+ opj_free(jp2->color.jp2_cdef->info);
+ jp2->color.jp2_cdef->info = NULL;
+ }
+
opj_free(jp2->color.jp2_cdef);
jp2->color.jp2_cdef = 00;
}
if (jp2->color.jp2_pclr) {
+ if (jp2->color.jp2_pclr->cmap) {
+ opj_free(jp2->color.jp2_pclr->cmap);
+ jp2->color.jp2_pclr->cmap = NULL;
+ }
+ if (jp2->color.jp2_pclr->channel_sign) {
+ opj_free(jp2->color.jp2_pclr->channel_sign);
+ jp2->color.jp2_pclr->channel_sign = NULL;
+ }
+ if (jp2->color.jp2_pclr->channel_size) {
+ opj_free(jp2->color.jp2_pclr->channel_size);
+ jp2->color.jp2_pclr->channel_size = NULL;
+ }
+ if (jp2->color.jp2_pclr->entries) {
+ opj_free(jp2->color.jp2_pclr->entries);
+ jp2->color.jp2_pclr->entries = NULL;
+ }
+
opj_free(jp2->color.jp2_pclr);
jp2->color.jp2_pclr = 00;
}