Fix some warnings (#838)
authorMatthieu Darbois <mayeut@users.noreply.github.com>
Tue, 13 Sep 2016 22:12:43 +0000 (00:12 +0200)
committerGitHub <noreply@github.com>
Tue, 13 Sep 2016 22:12:43 +0000 (00:12 +0200)
Fix warnings introduced by uclouvain/openjpeg#786

src/bin/jp2/opj_decompress.c
src/lib/openjp2/dwt.c
src/lib/openjp2/j2k.c
src/lib/openjp2/openjpeg.c
src/lib/openjp2/opj_includes.h
src/lib/openjp2/t1.c
src/lib/openjp2/thread.c

index 57fe554be9e37a68fac6c7c22c30a33d07d04634..83160c3d18e19d0383cc32c22236491e0c635777 100644 (file)
@@ -911,7 +911,7 @@ OPJ_FLOAT64 opj_clock(void) {
 #elif defined(__linux)
        struct timespec ts;
        clock_gettime(CLOCK_REALTIME, &ts);
-       return( ts.tv_sec + ts.tv_nsec * 1e-9 );
+       return( (OPJ_FLOAT64)ts.tv_sec + (OPJ_FLOAT64)ts.tv_nsec * 1e-9 );
 #else
        /* Unix : use resource usage */
        /* FIXME: this counts the total CPU time, instead of the user perceived time */
index 2e28effc855cbb8b749f61acfcee8e7dcc0b87f5..2d793bb6a15abf8f1484f8b1f72a3cdbd7b8c977 100644 (file)
@@ -563,13 +563,13 @@ typedef struct
     OPJ_UINT32 rw;
     OPJ_UINT32 w;
     OPJ_INT32 * OPJ_RESTRICT tiledp;
-    int min_j;
-    int max_j;
+    OPJ_UINT32 min_j;
+    OPJ_UINT32 max_j;
 } opj_dwd_decode_h_job_t;
 
 static void opj_dwt_decode_h_func(void* user_data, opj_tls_t* tls)
 {
-    int j;
+    OPJ_UINT32 j;
     opj_dwd_decode_h_job_t* job;
     (void)tls;
 
@@ -592,13 +592,13 @@ typedef struct
     OPJ_UINT32 rh;
     OPJ_UINT32 w;
     OPJ_INT32 * OPJ_RESTRICT tiledp;
-    int min_j;
-    int max_j;
+    OPJ_UINT32 min_j;
+    OPJ_UINT32 max_j;
 } opj_dwd_decode_v_job_t;
 
 static void opj_dwt_decode_v_func(void* user_data, opj_tls_t* tls)
 {
-    int j;
+    OPJ_UINT32 j;
     opj_dwd_decode_v_job_t* job;
     (void)tls;
 
@@ -631,8 +631,8 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
        OPJ_UINT32 rh = (OPJ_UINT32)(tr->y1 - tr->y0);  /* height of the resolution level computed */
 
        OPJ_UINT32 w = (OPJ_UINT32)(tilec->x1 - tilec->x0);
-    size_t h_mem_size;
-    int num_threads;
+       size_t h_mem_size;
+       int num_threads;
        
        if (numres == 1U) {
                return OPJ_TRUE;
@@ -671,9 +671,10 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
         }
         else
         {
-            int num_jobs = num_threads;
-            if( rh < num_jobs )
+            OPJ_UINT32 num_jobs = (OPJ_UINT32)num_threads;
+            if( rh < num_jobs ) {
                 num_jobs = rh;
+            }
             for( j = 0; j < num_jobs; j++ )
             {
                 opj_dwd_decode_h_job_t* job;
@@ -695,7 +696,7 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
                 job->w = w;
                 job->tiledp = tiledp;
                 job->min_j = j * (rh / num_jobs);
-                job->max_j = (j+1) * (rh / num_jobs);
+                job->max_j = (j+1) * (rh / num_jobs); /* TODO this can overflow */
                 if( job->max_j > rh || j == num_jobs - 1 )
                     job->max_j = rh;
                 job->h.mem = (OPJ_INT32*)opj_aligned_malloc(h_mem_size);
@@ -728,7 +729,7 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
         }
         else
         {
-            int num_jobs = num_threads;
+            OPJ_UINT32 num_jobs = (OPJ_UINT32)num_threads;
             if( rw < num_jobs )
                 num_jobs = rw;
             for( j = 0; j < num_jobs; j++ )
@@ -752,7 +753,7 @@ static OPJ_BOOL opj_dwt_decode_tile(opj_thread_pool_t* tp, opj_tcd_tilecomp_t* t
                 job->w = w;
                 job->tiledp = tiledp;
                 job->min_j = j * (rw / num_jobs);
-                job->max_j = (j+1) * (rw / num_jobs);
+                job->max_j = (j+1) * (rw / num_jobs); /* TODO this can overflow */
                 if( job->max_j > rw || j == num_jobs - 1 )
                     job->max_j = rw;
                 job->v.mem = (OPJ_INT32*)opj_aligned_malloc(h_mem_size);
index bdacbe91f30c67d09d7ccfe308fb3b5e9ae80e8d..66802bb961a57d5c6b9858ce244d5c389e9bd900 100644 (file)
@@ -5953,8 +5953,11 @@ OPJ_BOOL opj_j2k_set_threads(opj_j2k_t *j2k, OPJ_UINT32 num_threads)
         if( opj_has_thread_support() )
         {
             opj_thread_pool_destroy(j2k->m_tp);
-            j2k->m_tp = opj_thread_pool_create((int)num_threads);
-            if( j2k->m_tp == 0 )
+            j2k->m_tp = NULL;
+            if (num_threads <= (OPJ_UINT32)INT_MAX ) {
+                j2k->m_tp = opj_thread_pool_create((int)num_threads);
+            }
+            if( j2k->m_tp == NULL )
             {
                 j2k->m_tp = opj_thread_pool_create(0);
                 return OPJ_FALSE;
index ee3e14b6dfd4d748e8667f16a60a6e129bfc8431..4d12540e385849b25fe3e6dab74933da8e2a6604 100644 (file)
@@ -361,15 +361,15 @@ void OPJ_CALLCONV opj_set_default_decoder_parameters(opj_dparameters_t *paramete
 }
 
 
-OPJ_API OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec,
+OPJ_BOOL OPJ_CALLCONV opj_codec_set_threads(opj_codec_t *p_codec,
                                                     int num_threads)
 {
-  if (p_codec ) { 
-        opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;
+       if (p_codec && (num_threads >= 0)) {
+               opj_codec_private_t * l_codec = (opj_codec_private_t *) p_codec;
 
-        return l_codec->opj_set_threads(l_codec->m_codec, num_threads);
-    }
-    return OPJ_FALSE;
+               return l_codec->opj_set_threads(l_codec->m_codec, (OPJ_UINT32)num_threads);
+       }
+       return OPJ_FALSE;
 }
 
 OPJ_BOOL OPJ_CALLCONV opj_setup_decoder(opj_codec_t *p_codec,
index 3576877ca5267fc84aaf51abad307529f9e458cb..e3de42daee94774c6554123bb697131a5794e1cf 100644 (file)
@@ -54,6 +54,7 @@
 #include <stdarg.h>
 #include <ctype.h>
 #include <assert.h>
+#include <limits.h>
 
 /*
   Use fseeko() and ftello() if they are available since they use
index 66884e3b52cce477b95807b48a83187b3f27b655..1b722c9e5ae189a67feb562ae21d2b3d789c9cf7 100644 (file)
@@ -86,15 +86,15 @@ static INLINE void opj_t1_dec_sigpass_step_raw(
                 OPJ_INT32 *datap,
                 OPJ_INT32 oneplushalf,
                 OPJ_INT32 vsc,
-                OPJ_INT32 row);
+                OPJ_UINT32 row);
 static INLINE void opj_t1_dec_sigpass_step_mqc(
                 opj_t1_t *t1,
                 opj_flag_t *flagsp,
                 opj_colflag_t* colflagsp,
                 OPJ_INT32 *datap,
                 OPJ_INT32 oneplushalf,
-                OPJ_INT32 row,
-                OPJ_INT32 flags_stride);
+                OPJ_UINT32 row,
+                OPJ_UINT32 flags_stride);
 static INLINE void opj_t1_dec_sigpass_step_mqc_vsc(
                 opj_t1_t *t1,
                 opj_flag_t *flagsp,
@@ -102,7 +102,7 @@ static INLINE void opj_t1_dec_sigpass_step_mqc_vsc(
                 OPJ_INT32 *datap,
                 OPJ_INT32 oneplushalf,
                 OPJ_INT32 vsc,
-                OPJ_INT32 row);
+                OPJ_UINT32 row);
 
 
 /**
@@ -154,8 +154,7 @@ Decode refinement pass
 */
 static void opj_t1_dec_refpass_raw(
                 opj_t1_t *t1,
-                OPJ_INT32 bpno,
-                OPJ_INT32 cblksty);
+                OPJ_INT32 bpno);
 static void opj_t1_dec_refpass_mqc_vsc(
                 opj_t1_t *t1,
                 OPJ_INT32 bpno);
@@ -176,12 +175,11 @@ static void opj_t1_dec_refpass_step(opj_t1_t *t1,
 
 static INLINE void  opj_t1_dec_refpass_step_raw(
                 opj_t1_t *t1,
-                opj_flag_t *flagsp,
                 opj_colflag_t *colflagsp,
                 OPJ_INT32 *datap,
                 OPJ_INT32 poshalf,
                 OPJ_INT32 neghalf,
-                OPJ_INT32 row);
+                OPJ_UINT32 row);
 static INLINE void opj_t1_dec_refpass_step_mqc(
                 opj_t1_t *t1,
                 opj_flag_t *flagsp,
@@ -189,7 +187,7 @@ static INLINE void opj_t1_dec_refpass_step_mqc(
                 OPJ_INT32 *datap,
                 OPJ_INT32 poshalf,
                 OPJ_INT32 neghalf,
-                OPJ_INT32 row);
+                OPJ_UINT32 row);
 static INLINE void opj_t1_dec_refpass_step_mqc_vsc(
                 opj_t1_t *t1,
                 opj_flag_t *flagsp,
@@ -198,7 +196,7 @@ static INLINE void opj_t1_dec_refpass_step_mqc_vsc(
                 OPJ_INT32 poshalf,
                 OPJ_INT32 neghalf,
                 OPJ_INT32 vsc,
-                OPJ_INT32 row);
+                OPJ_UINT32 row);
 
 
 
@@ -223,14 +221,14 @@ static void opj_t1_dec_clnpass_step_partial(
                opj_colflag_t *colflagsp,
                OPJ_INT32 *datap,
                OPJ_INT32 oneplushalf,
-               OPJ_INT32 row);
+               OPJ_UINT32 row);
 static void opj_t1_dec_clnpass_step(
                opj_t1_t *t1,
                opj_flag_t *flagsp,
                opj_colflag_t *colflagsp,
                OPJ_INT32 *datap,
                OPJ_INT32 oneplushalf,
-               OPJ_INT32 row);
+               OPJ_UINT32 row);
 static void opj_t1_dec_clnpass_step_vsc(
                opj_t1_t *t1,
                opj_flag_t *flagsp,
@@ -239,7 +237,7 @@ static void opj_t1_dec_clnpass_step_vsc(
                OPJ_INT32 oneplushalf,
                OPJ_INT32 partial,
                OPJ_INT32 vsc,
-               OPJ_INT32 row);
+               OPJ_UINT32 row);
 /**
 Encode clean-up pass
 */
@@ -248,13 +246,6 @@ static void opj_t1_enc_clnpass(
                OPJ_INT32 bpno,
                OPJ_INT32 *nmsedec,
                OPJ_UINT32 cblksty);
-/**
-Decode clean-up pass
-*/
-static void opj_t1_dec_clnpass(
-               opj_t1_t *t1,
-               OPJ_INT32 bpno,
-               OPJ_INT32 cblksty);
 
 static OPJ_FLOAT64 opj_t1_getwmsedec(
                OPJ_INT32 nmsedec,
@@ -362,10 +353,10 @@ static INLINE void opj_t1_updateflags(opj_flag_t *flagsp, OPJ_UINT32 s, OPJ_UINT
        sp[1]  |= T1_SIG_NW;
 }
 
-static INLINE void opj_t1_updateflagscolflags(opj_flag_t *flagsp, opj_colflag_t *colflagsp, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_INT32 row)
+static INLINE void opj_t1_updateflagscolflags(opj_flag_t *flagsp, opj_colflag_t *colflagsp, OPJ_UINT32 s, OPJ_UINT32 stride, OPJ_UINT32 row)
 {
        opj_t1_updateflags(flagsp, s, stride);
-       if( row == 0 )
+       if( row == 0U )
        {
                        *colflagsp |= (T1_COLFLAG_SIG_ROW_0 <<  (T1_COLFLAG_RBS * row)) |
                                                  (T1_COLFLAG_SIG_OTHER_ROW_0 <<  (T1_COLFLAG_RBS * (row+1)));
@@ -377,7 +368,7 @@ static INLINE void opj_t1_updateflagscolflags(opj_flag_t *flagsp, opj_colflag_t
                        *(colflagsp - stride) |= (T1_COLFLAG_SIG_OTHER_ROW_3);
                        *(colflagsp - stride + 1) |= (T1_COLFLAG_SIG_OTHER_ROW_3);
        }
-       else if( row == 3 )
+       else if( row == 3U )
        {
                        *colflagsp |= (T1_COLFLAG_SIG_ROW_0 <<  (T1_COLFLAG_RBS * row)) |
                                                  (T1_COLFLAG_SIG_OTHER_ROW_0 <<  (T1_COLFLAG_RBS * (row-1)));
@@ -450,7 +441,7 @@ static INLINE void opj_t1_dec_sigpass_step_raw(
                 OPJ_INT32 *datap,
                 OPJ_INT32 oneplushalf,
                 OPJ_INT32 vsc,
-                OPJ_INT32 row)
+                OPJ_UINT32 row)
 {
         OPJ_INT32 v, flag;
         opj_raw_t *raw = t1->raw;       /* RAW component */
@@ -475,8 +466,8 @@ static INLINE void opj_t1_dec_sigpass_step_mqc(
                 opj_colflag_t* colflagsp,
                 OPJ_INT32 *datap,
                 OPJ_INT32 oneplushalf,
-                OPJ_INT32 row,
-                OPJ_INT32 flags_stride)
+                OPJ_UINT32 row,
+                OPJ_UINT32 flags_stride)
 {
         OPJ_INT32 v, flag;
        
@@ -510,7 +501,7 @@ static INLINE void opj_t1_dec_sigpass_step_mqc_vsc(
                 OPJ_INT32 *datap,
                 OPJ_INT32 oneplushalf,
                 OPJ_INT32 vsc,
-                OPJ_INT32 row)
+                OPJ_UINT32 row)
 {
         OPJ_INT32 v, flag;
        
@@ -611,16 +602,16 @@ static void opj_t1_dec_sigpass_raw(
                         opj_colflag_t *colflags2 = colflags1 + i; \
                         if( *colflags2 == 0 ) continue; \
                         flags2 += flags_stride; \
-                        opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 0, flags_stride); \
+                        opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 0U, flags_stride); \
                         data2 += w; \
                         flags2 += flags_stride; \
-                        opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 1, flags_stride); \
+                        opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 1U, flags_stride); \
                         data2 += w; \
                         flags2 += flags_stride; \
-                        opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 2, flags_stride); \
+                        opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 2U, flags_stride); \
                         data2 += w; \
                         flags2 += flags_stride; \
-                        opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 3, flags_stride); \
+                        opj_t1_dec_sigpass_step_mqc(t1, flags2, colflags2, data2, oneplushalf, 3U, flags_stride); \
                         data2 += w; \
                 } \
                 data1 += w << 2; \
@@ -666,22 +657,22 @@ static void opj_t1_dec_sigpass_mqc_vsc(
         one = 1 << bpno;
         half = one >> 1;
         oneplushalf = one | half;
-        for (k = 0; k < (t1->h & ~3); k += 4) {
+        for (k = 0; k < (t1->h & ~(OPJ_UINT32)3); k += 4U) {
                 for (i = 0; i < t1->w; ++i) {
                         OPJ_INT32 *data2 = data1 + i;
                         opj_flag_t *flags2 = flags1 + i;
                         opj_colflag_t *colflags2 = colflags1 + i;
                         flags2 += t1->flags_stride;
-                        opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 0);
+                        opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 0U);
                         data2 += t1->w;
                         flags2 += t1->flags_stride;
-                        opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 1);
+                        opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 1U);
                         data2 += t1->w;
                         flags2 += t1->flags_stride;
-                        opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 2);
+                        opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 0, 2U);
                         data2 += t1->w;
                         flags2 += t1->flags_stride;
-                        opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 1, 3);
+                        opj_t1_dec_sigpass_step_mqc_vsc(t1, flags2, colflags2, data2, oneplushalf, 1, 3U);
                         data2 += t1->w;
                 }
                 data1 += t1->w << 2;
@@ -736,12 +727,11 @@ static void opj_t1_enc_refpass_step(   opj_t1_t *t1,
 
 static INLINE void opj_t1_dec_refpass_step_raw(
                 opj_t1_t *t1,
-                opj_flag_t *flagsp,
                 opj_colflag_t *colflagsp,
                 OPJ_INT32 *datap,
                 OPJ_INT32 poshalf,
                 OPJ_INT32 neghalf,
-                OPJ_INT32 row)
+                OPJ_UINT32 row)
 {
         OPJ_INT32 v, t;
        
@@ -767,7 +757,7 @@ static INLINE void opj_t1_dec_refpass_step_mqc(
                 OPJ_INT32 *datap,
                 OPJ_INT32 poshalf,
                 OPJ_INT32 neghalf,
-                OPJ_INT32 row)
+                OPJ_UINT32 row)
 {
         OPJ_INT32 v, t;
        
@@ -775,6 +765,8 @@ static INLINE void opj_t1_dec_refpass_step_mqc(
 #ifdef CONSISTENCY_CHECK
                assert( ((*flagsp & (T1_SIG | T1_VISIT)) == T1_SIG) == 
                                ((*colflagsp & ((T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0) << (T1_COLFLAG_RBS * row))) == ((T1_COLFLAG_SIG_ROW_0) << (T1_COLFLAG_RBS * row))) );
+#else
+        (void)flagsp_unused;
 #endif
         if ((*colflagsp & ((T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0) << (T1_COLFLAG_RBS * row))) ==
             ((T1_COLFLAG_SIG_ROW_0) << (T1_COLFLAG_RBS * row))) {
@@ -796,9 +788,9 @@ static INLINE void opj_t1_dec_refpass_step_mqc_vsc(
                 OPJ_INT32 poshalf,
                 OPJ_INT32 neghalf,
                 OPJ_INT32 vsc,
-                OPJ_INT32 row)
+                OPJ_UINT32 row)
 {
-        OPJ_INT32 v, t, flag;
+        OPJ_INT32 v, t;
        
         opj_mqc_t *mqc = t1->mqc;       /* MQC component */
        
@@ -848,12 +840,10 @@ static void opj_t1_enc_refpass(
 
 static void opj_t1_dec_refpass_raw(
                 opj_t1_t *t1,
-                OPJ_INT32 bpno,
-                OPJ_INT32 cblksty)
+                OPJ_INT32 bpno)
 {
         OPJ_INT32 one, poshalf, neghalf;
         OPJ_UINT32 i, j, k;
-        OPJ_INT32 vsc;
         opj_colflag_t *colflags1 = &t1->colflags[t1->flags_stride + 1];
         one = 1 << bpno;
         poshalf = one >> 1;
@@ -864,7 +854,6 @@ static void opj_t1_dec_refpass_raw(
                         for (j = k; j < k + 4 && j < t1->h; ++j) {
                                 opj_t1_dec_refpass_step_raw(
                                                 t1,
-                                                &t1->flags[((j+1) * t1->flags_stride) + i + 1],
                                                 colflags2,
                                                 &t1->data[(j * t1->w) + i],
                                                 poshalf,
@@ -892,16 +881,16 @@ static void opj_t1_dec_refpass_raw(
                         opj_colflag_t *colflags2 = colflags1 + i; \
                         if( *colflags2 == 0 ) continue; \
                         flags2 += flags_stride; \
-                        opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 0); \
+                        opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 0U); \
                         data2 += w; \
                         flags2 += flags_stride; \
-                        opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 1); \
+                        opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 1U); \
                         data2 += w; \
                         flags2 += flags_stride; \
-                        opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 2); \
+                        opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 2U); \
                         data2 += w; \
                         flags2 += flags_stride; \
-                        opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 3); \
+                        opj_t1_dec_refpass_step_mqc(t1, flags2, colflags2, data2, poshalf, neghalf, 3U); \
                         data2 += w; \
                 } \
                 data1 += w << 2; \
@@ -948,22 +937,22 @@ static void opj_t1_dec_refpass_mqc_vsc(
         one = 1 << bpno;
         poshalf = one >> 1;
         neghalf = bpno > 0 ? -poshalf : -1;
-        for (k = 0; k < (t1->h & ~3); k += 4) {
+        for (k = 0; k < (t1->h & ~(OPJ_UINT32)3U); k += 4U) {
                 for (i = 0; i < t1->w; ++i) {
                         OPJ_INT32 *data2 = data1 + i;
                         opj_flag_t *flags2 = flags1 + i;
                         opj_colflag_t *colflags2 = colflags1 + i;
                         flags2 += t1->flags_stride;
-                        opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 0);
+                        opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 0U);
                         data2 += t1->w;
                         flags2 += t1->flags_stride;
-                        opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 1);
+                        opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 1U);
                         data2 += t1->w;
                         flags2 += t1->flags_stride;
-                        opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 2);
+                        opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 0, 2U);
                         data2 += t1->w;
                         flags2 += t1->flags_stride;
-                        opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 1, 3);
+                        opj_t1_dec_refpass_step_mqc_vsc(t1, flags2, colflags2, data2, poshalf, neghalf, 1, 3U);
                         data2 += t1->w;
                 }
                 data1 += t1->w << 2;
@@ -1028,7 +1017,7 @@ static void opj_t1_dec_clnpass_step_partial(
                opj_colflag_t *colflagsp,
                OPJ_INT32 *datap,
                OPJ_INT32 oneplushalf,
-               OPJ_INT32 row)
+               OPJ_UINT32 row)
 {
        OPJ_INT32 v, flag;
        opj_mqc_t *mqc = t1->mqc;       /* MQC component */
@@ -1049,7 +1038,7 @@ static void opj_t1_dec_clnpass_step(
                opj_colflag_t *colflagsp,
                OPJ_INT32 *datap,
                OPJ_INT32 oneplushalf,
-               OPJ_INT32 row)
+               OPJ_UINT32 row)
 {
        OPJ_INT32 v, flag;
        
@@ -1078,8 +1067,8 @@ static void opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(
         opj_colflag_t *colflagsp,
         OPJ_INT32 *datap,
         OPJ_INT32 oneplushalf,
-        OPJ_INT32 row,
-        OPJ_INT32 flags_stride)
+        OPJ_UINT32 row,
+        OPJ_UINT32 flags_stride)
 {
     OPJ_INT32 v;
     OPJ_INT32 flag;
@@ -1094,7 +1083,7 @@ static void opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(
             opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)flag));
             v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag);
             *datap = v ? -oneplushalf : oneplushalf;
-            opj_t1_updateflagscolflags(flagsp, colflagsp, v, flags_stride, row);
+            opj_t1_updateflagscolflags(flagsp, colflagsp, (OPJ_UINT32)v, flags_stride, row);
         }
     }
     /*flagsp &= ~T1_VISIT;*/
@@ -1103,12 +1092,12 @@ static void opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(
 static void opj_t1_dec_clnpass_step_vsc(
                opj_t1_t *t1,
                opj_flag_t *flagsp,
-        opj_colflag_t *colflagsp,
+               opj_colflag_t *colflagsp,
                OPJ_INT32 *datap,
                OPJ_INT32 oneplushalf,
                OPJ_INT32 partial,
                OPJ_INT32 vsc,
-        OPJ_INT32 row)
+               OPJ_UINT32 row)
 {
        OPJ_INT32 v, flag;
        
@@ -1125,7 +1114,7 @@ LABEL_PARTIAL:
                        opj_mqc_setcurctx(mqc, opj_t1_getctxno_sc((OPJ_UINT32)flag));
                        v = opj_mqc_decode(mqc) ^ opj_t1_getspb((OPJ_UINT32)flag);
                        *datap = v ? -oneplushalf : oneplushalf;
-                       opj_t1_updateflagscolflags(flagsp, colflagsp, v, t1->flags_stride, row);
+                       opj_t1_updateflagscolflags(flagsp, colflagsp, (OPJ_UINT32)v, t1->flags_stride, row);
                }
        }
 #ifdef CONSISTENCY_CHECK
@@ -1202,7 +1191,7 @@ static void opj_t1_enc_clnpass(
 #define opj_t1_dec_clnpass_internal(consistency_check, t1, bpno, cblksty, w, h, flags_stride) \
 { \
        OPJ_INT32 one, half, oneplushalf, agg, runlen, vsc; \
-    OPJ_UINT32 i, j, k; \
+       OPJ_UINT32 i, j, k; \
        OPJ_INT32 segsym = cblksty & J2K_CCP_CBLKSTY_SEGSYM; \
         \
        opj_mqc_t *mqc = t1->mqc;       /* MQC component */ \
@@ -1294,28 +1283,28 @@ static void opj_t1_enc_clnpass(
                                        flags2 += flags_stride; \
                                        if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
                                        if (!(colflags & (T1_COLFLAG_SIG_ROW_0 | T1_COLFLAG_VISIT_ROW_0))) {\
-                                               opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 0, flags_stride); \
+                                               opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 0U, flags_stride); \
                                        } \
                                        if( consistency_check ) *flags2 &= ~T1_VISIT; \
                                        data2 += w; \
                                        flags2 += flags_stride; \
                                        if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
                                        if (!(colflags & (T1_COLFLAG_SIG_ROW_1 | T1_COLFLAG_VISIT_ROW_1))) {\
-                                               opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 1, flags_stride); \
+                                               opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 1U, flags_stride); \
                                        } \
                                        if( consistency_check ) *flags2 &= ~T1_VISIT; \
                                        data2 += w; \
                                        flags2 += flags_stride; \
                                        if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
                                        if (!(colflags & (T1_COLFLAG_SIG_ROW_2 | T1_COLFLAG_VISIT_ROW_2))) {\
-                                               opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 2, flags_stride); \
+                                               opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 2U, flags_stride); \
                                        } \
                                        if( consistency_check ) *flags2 &= ~T1_VISIT; \
                                        data2 += w; \
                                        flags2 += flags_stride; \
                                        if( consistency_check ) { assert( (!(colflags & (T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3))) == (!(*flags2 & (T1_SIG | T1_VISIT))) ); } \
                                        if (!(colflags & (T1_COLFLAG_SIG_ROW_3 | T1_COLFLAG_VISIT_ROW_3))) {\
-                                               opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 3, flags_stride); \
+                                               opj_t1_dec_clnpass_step_only_if_flag_not_sig_visit(t1, flags2, colflags2, data2, oneplushalf, 3U, flags_stride); \
                                        } \
                                        if( consistency_check ) *flags2 &= ~T1_VISIT; \
                                        data2 += w; \
@@ -1634,19 +1623,19 @@ static void opj_t1_clbl_decode_processor(void* user_data, opj_tls_t* tls)
         OPJ_INT32* OPJ_RESTRICT tiledp = &tilec->data[(OPJ_UINT32)y * tile_w + (OPJ_UINT32)x];
         for (j = 0; j < cblk_h; ++j) {
             i = 0;
-            for (; i < (cblk_w & ~3); i += 4) {
-                OPJ_INT32 tmp0 = datap[(j * cblk_w) + i];
-                OPJ_INT32 tmp1 = datap[(j * cblk_w) + i+1];
-                OPJ_INT32 tmp2 = datap[(j * cblk_w) + i+2];
-                OPJ_INT32 tmp3 = datap[(j * cblk_w) + i+3];
-                ((OPJ_INT32*)tiledp)[(j * tile_w) + i] = tmp0/2;
-                ((OPJ_INT32*)tiledp)[(j * tile_w) + i+1] = tmp1/2;
-                ((OPJ_INT32*)tiledp)[(j * tile_w) + i+2] = tmp2/2;
-                ((OPJ_INT32*)tiledp)[(j * tile_w) + i+3] = tmp3/2;
+            for (; i < (cblk_w & ~(OPJ_UINT32)3U); i += 4U) {
+                OPJ_INT32 tmp0 = datap[(j * cblk_w) + i + 0U];
+                OPJ_INT32 tmp1 = datap[(j * cblk_w) + i + 1U];
+                OPJ_INT32 tmp2 = datap[(j * cblk_w) + i + 2U];
+                OPJ_INT32 tmp3 = datap[(j * cblk_w) + i + 3U];
+                ((OPJ_INT32*)tiledp)[(j * tile_w) + i + 0U] = tmp0 / 2;
+                ((OPJ_INT32*)tiledp)[(j * tile_w) + i + 1U] = tmp1 / 2;
+                ((OPJ_INT32*)tiledp)[(j * tile_w) + i + 2U] = tmp2 / 2;
+                ((OPJ_INT32*)tiledp)[(j * tile_w) + i + 3U] = tmp3 / 2;
             }
             for (; i < cblk_w; ++i) {
                 OPJ_INT32 tmp = datap[(j * cblk_w) + i];
-                ((OPJ_INT32*)tiledp)[(j * tile_w) + i] = tmp/2;
+                ((OPJ_INT32*)tiledp)[(j * tile_w) + i] = tmp / 2;
             }
         }
     } else {        /* if (tccp->qmfbid == 0) */
@@ -1778,7 +1767,7 @@ static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1,
                                          break;
                                  case 1:
                                          if (type == T1_TYPE_RAW) {
-                                                         opj_t1_dec_refpass_raw(t1, bpno_plus_one, (OPJ_INT32)cblksty);
+                                                         opj_t1_dec_refpass_raw(t1, bpno_plus_one);
                                          } else {
                                                  if (cblksty & J2K_CCP_CBLKSTY_VSC) {
                                                          opj_t1_dec_refpass_mqc_vsc(t1, bpno_plus_one);
@@ -1821,7 +1810,7 @@ static OPJ_BOOL opj_t1_decode_cblk(opj_t1_t *t1,
                                          break;
                                  case 1:
                                          if (type == T1_TYPE_RAW) {
-                                                         opj_t1_dec_refpass_raw(t1, bpno_plus_one, (OPJ_INT32)cblksty);
+                                                         opj_t1_dec_refpass_raw(t1, bpno_plus_one);
                                          } else {
                                                  if (cblksty & J2K_CCP_CBLKSTY_VSC) {
                                                          opj_t1_dec_refpass_mqc_vsc(t1, bpno_plus_one);
index fce563d033dd288856dfc9888e5050dfd9664ec2..79a9d5fb496ac20b12dd21eb94fb610c3b0cbae8 100644 (file)
@@ -314,11 +314,13 @@ struct opj_mutex_t
 
 opj_mutex_t* opj_mutex_create(void)
 {
-    opj_mutex_t* mutex = (opj_mutex_t*) opj_malloc(sizeof(opj_mutex_t));
-    if( !mutex )
-        return NULL;
-    pthread_mutex_t pthr_mutex = PTHREAD_MUTEX_INITIALIZER;
-    mutex->mutex = pthr_mutex;
+    opj_mutex_t* mutex = (opj_mutex_t*) opj_calloc(1U, sizeof(opj_mutex_t));
+    if( mutex != NULL ) {
+        if ( pthread_mutex_init(&mutex->mutex, NULL) != 0) {
+            opj_free(mutex);
+            mutex = NULL;
+        }
+    }
     return mutex;
 }
 
@@ -537,19 +539,24 @@ OPJ_BOOL opj_tls_set(opj_tls_t* tls, int key, void* value, opj_tls_free_func opj
 {
     opj_tls_key_val_t* new_key_val;
     int i;
+       
+    if (tls->key_val_count == INT_MAX) {
+        return OPJ_FALSE;
+    }
     for(i=0;i<tls->key_val_count;i++)
     {
         if( tls->key_val[i].key == key )
         {
-            if( tls->key_val[i].opj_free_func )
+            if( tls->key_val[i].opj_free_func ) {
                 tls->key_val[i].opj_free_func(tls->key_val[i].value);
+            }
             tls->key_val[i].value = value;
             tls->key_val[i].opj_free_func = opj_free_func;
             return OPJ_TRUE;
         }
     }
     new_key_val = (opj_tls_key_val_t*) opj_realloc( tls->key_val,
-                        (tls->key_val_count + 1) * sizeof(opj_tls_key_val_t) );
+                        ((size_t)tls->key_val_count + 1U) * sizeof(opj_tls_key_val_t) );
     if( !new_key_val )
         return OPJ_FALSE;
     tls->key_val = new_key_val;
@@ -691,7 +698,7 @@ static OPJ_BOOL opj_thread_pool_setup(opj_thread_pool_t* tp, int num_threads)
     if( tp->cond == NULL )
         return OPJ_FALSE;
 
-    tp->worker_threads = (opj_worker_thread_t*) opj_calloc( num_threads,
+    tp->worker_threads = (opj_worker_thread_t*) opj_calloc( (size_t)num_threads,
                                                         sizeof(opj_worker_thread_t) );
     if( tp->worker_threads == NULL )
         return OPJ_FALSE;