[trunk] WIP: correct some memory leaks in applications functions
[openjpeg.git] / libopenjpeg / t2.c
index 017203d63883762bfb23eb36eb114604aeb6a168..15029c314c231d5264750035b116c8d54573f208 100644 (file)
@@ -844,12 +844,12 @@ opj_bool t2_decode_packets_v2(
                                                OPJ_BYTE *p_src,
                                                OPJ_UINT32 * p_data_read,
                                                OPJ_UINT32 p_max_len,
-                                               struct opj_codestream_info_v2 *p_cstr_info)
+                                               opj_codestream_index_t *p_cstr_index)
 {
        OPJ_BYTE *l_current_data = p_src;
        opj_pi_iterator_t *l_pi = 00;
        OPJ_UINT32 pino;
-       opj_image_header_t *l_image = p_t2->image;
+       opj_image_t *l_image = p_t2->image;
        opj_cp_v2_t *l_cp = p_t2->cp;
        opj_cp_v2_t *cp = p_t2->cp;
        opj_tcp_v2_t *l_tcp = &(p_t2->cp->tcps[p_tile_no]);
@@ -859,12 +859,13 @@ opj_bool t2_decode_packets_v2(
        OPJ_UINT32 curtp = 0;
        OPJ_UINT32 tp_start_packno;
        opj_packet_info_t *l_pack_info = 00;
-       opj_image_comp_header_t* l_img_comp = 00;
+       opj_image_comp_t* l_img_comp = 00;
 
-
-       if (p_cstr_info) {
-               l_pack_info = p_cstr_info->tile[p_tile_no].packet;
+#ifdef TODO_MSD
+       if (p_cstr_index) {
+               l_pack_info = p_cstr_index->tile_index[p_tile_no].packet;
        }
+#endif
 
        /* create a packet iterator */
        l_pi = pi_create_decode_v2(l_image, l_cp, p_tile_no);
@@ -903,6 +904,7 @@ opj_bool t2_decode_packets_v2(
                        p_max_len -= l_nb_bytes_read;
 
                        /* INDEX >> */
+#ifdef TODO_MSD
                        if(p_cstr_info) {
                                opj_tile_info_v2_t *info_TL = &p_cstr_info->tile[p_tile_no];
                                opj_packet_info_t *info_PK = &info_TL->packet[p_cstr_info->packno];
@@ -920,15 +922,18 @@ opj_bool t2_decode_packets_v2(
                                info_PK->end_ph_pos += info_PK->start_pos - 1;  // End of packet header which now only represents the distance
                                ++p_cstr_info->packno;
                        }
+#endif
                        /* << INDEX */
                }
                ++l_current_pi;
        }
        /* INDEX >> */
+#ifdef TODO_MSD
        if
                (p_cstr_info) {
                p_cstr_info->tile[p_tile_no].tp[curtp].tp_numpacks = p_cstr_info->packno - tp_start_packno; // Number of packets in last tile-part
        }
+#endif
        /* << INDEX */
 
        /* don't forget to release pi */
@@ -957,20 +962,19 @@ opj_t2_t* t2_create(opj_common_ptr cinfo, opj_image_t *image, opj_cp_t *cp) {
  * @param      p_cp            Image coding parameters.
  * @return             a new T2 handle if successful, NULL otherwise.
 */
-opj_t2_v2_t* t2_create_v2(
-                                       opj_image_header_t *p_image,
-                                       opj_cp_v2_t *p_cp)
+opj_t2_v2_t* t2_create_v2(     opj_image_t *p_image,
+                                                       opj_cp_v2_t *p_cp)
 {
        /* create the tcd structure */
        opj_t2_v2_t *l_t2 = (opj_t2_v2_t*)opj_malloc(sizeof(opj_t2_v2_t));
-       if
-               (!l_t2)
-       {
-               return 00;
+       if (!l_t2) {
+               return NULL;
        }
-       memset(l_t2,0,sizeof(opj_t2_t));
+       memset(l_t2,0,sizeof(opj_t2_v2_t));
+
        l_t2->image = p_image;
        l_t2->cp = p_cp;
+
        return l_t2;
 }
 
@@ -1024,7 +1028,7 @@ static opj_bool t2_decode_packet_v2(
 
        *p_data_read = l_nb_total_bytes_read;
 
-       return OPJ_FALSE;
+       return OPJ_TRUE;
 }
 
 static opj_bool t2_skip_packet(
@@ -1383,16 +1387,16 @@ static opj_bool t2_read_packet_data(
                        the validity of cblocks parameters is selected from user (-W) */
 
                                /* let's check that we are not exceeding */
-                               if ((cblk->len + seg->newlen) > 8192) {
-                                       opj_event_msg(t2->cinfo, EVT_WARNING,
+                               if ((l_cblk->len + l_seg->newlen) > 8192) {
+                                       opj_event_msg(p_t2->cinfo, EVT_WARNING,
                                                "JPWL: segment too long (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n",
-                                               seg->newlen, cblkno, precno, bandno, resno, compno);
+                                               l_seg->newlen, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno);
                                        if (!JPWL_ASSUME) {
-                                               opj_event_msg(t2->cinfo, EVT_ERROR, "JPWL: giving up\n");
-                                               return -999;
+                                               opj_event_msg(p_t2->cinfo, EVT_ERROR, "JPWL: giving up\n");
+                                               return OPJ_FALSE;
                                        }
-                                       seg->newlen = 8192 - cblk->len;
-                                       opj_event_msg(t2->cinfo, EVT_WARNING, "      - truncating segment to %d\n", seg->newlen);
+                                       l_seg->newlen = 8192 - l_cblk->len;
+                                       opj_event_msg(p_t2->cinfo, EVT_WARNING, "      - truncating segment to %d\n", l_seg->newlen);
                                        break;
                                };
 
@@ -1492,16 +1496,16 @@ static opj_bool t2_skip_packet_data(
                        the validity of cblocks parameters is selected from user (-W) */
 
                                /* let's check that we are not exceeding */
-                               if ((cblk->len + seg->newlen) > 8192) {
-                                       opj_event_msg(t2->cinfo, EVT_WARNING,
+                               if ((l_cblk->len + l_seg->newlen) > 8192) {
+                                       opj_event_msg(p_t2->cinfo, EVT_WARNING,
                                                "JPWL: segment too long (%d) for codeblock %d (p=%d, b=%d, r=%d, c=%d)\n",
-                                               seg->newlen, cblkno, precno, bandno, resno, compno);
+                                               l_seg->newlen, cblkno, p_pi->precno, bandno, p_pi->resno, p_pi->compno);
                                        if (!JPWL_ASSUME) {
-                                               opj_event_msg(t2->cinfo, EVT_ERROR, "JPWL: giving up\n");
+                                               opj_event_msg(p_t2->cinfo, EVT_ERROR, "JPWL: giving up\n");
                                                return -999;
                                        }
-                                       seg->newlen = 8192 - cblk->len;
-                                       opj_event_msg(t2->cinfo, EVT_WARNING, "      - truncating segment to %d\n", seg->newlen);
+                                       l_seg->newlen = 8192 - l_cblk->len;
+                                       opj_event_msg(p_t2->cinfo, EVT_WARNING, "      - truncating segment to %d\n", l_seg->newlen);
                                        break;
                                };