diff options
| author | Antonin Descampe <antonin@gmail.com> | 2004-08-06 14:13:51 +0000 |
|---|---|---|
| committer | Antonin Descampe <antonin@gmail.com> | 2004-08-06 14:13:51 +0000 |
| commit | bc5c5115cbd4b5d6500348f7af2fa49e02b216ce (patch) | |
| tree | 66c869d78bf9a64845e59a3df7a36330595c7e26 /libopenjpeg/j2k.c | |
| parent | 61ac18531a62bcc31552875d2d9c5458bac452e2 (diff) | |
* Inserted tool for memory leaks fixing in debug mode
* Fixed some memory leaks in the decoder (some are still present when multiple tiles!)
Diffstat (limited to 'libopenjpeg/j2k.c')
| -rw-r--r-- | libopenjpeg/j2k.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/libopenjpeg/j2k.c b/libopenjpeg/j2k.c index e8f766e4..6c611adf 100644 --- a/libopenjpeg/j2k.c +++ b/libopenjpeg/j2k.c @@ -1458,6 +1458,7 @@ j2k_decode(unsigned char *src, int len, j2k_image_t * img, j2k_cp_t * cp) cio_init(src, len); for (;;) { + j2k_dec_mstabent_t *e; int id = cio_read(2); if (id >> 8 != 0xff) { @@ -1473,6 +1474,7 @@ j2k_decode(unsigned char *src, int len, j2k_image_t * img, j2k_cp_t * cp) if (e->handler) { (*e->handler) (); } + if (j2k_state == J2K_STATE_NEOC) break; /* RAJOUTE */ } @@ -1562,6 +1564,26 @@ j2k_decode_jpt_stream(unsigned char *src, int len, j2k_image_t * img, return 0; } +void j2k_dec_release() +{ + int i=0; + + //tcd_dec_release(); + + if (j2k_tile_len!=NULL) free(j2k_tile_len); + if (j2k_tile_data!=NULL) free(j2k_tile_data); + if (j2k_default_tcp.ppt_data!=NULL) free(j2k_default_tcp.ppt_data); + if (j2k_default_tcp.tccps!=NULL) free(j2k_default_tcp.tccps); + for (i=0;i<j2k_cp->tw*j2k_cp->th;i++) { + if (j2k_cp->tcps[i].ppt_data!=NULL) free(j2k_cp->tcps[i].ppt_data); + if (j2k_cp->tcps[i].tccps!=NULL) free(j2k_cp->tcps[i].tccps); + } + if (j2k_cp->ppm_data!=NULL) free(j2k_cp->ppm_data); + if (j2k_cp->tcps!=NULL) free(j2k_cp->tcps); + if (j2k_img->comps!=NULL) free(j2k_img->comps); + if (j2k_cp->tileno!=NULL) free(j2k_cp->tileno); +} + #ifdef WIN32 #include <windows.h> |
