| diff --git a/third_party/libopenjpeg20/pi.c b/third_party/libopenjpeg20/pi.c |
| index 083674222..6af38d0ca 100644 |
| --- a/third_party/libopenjpeg20/pi.c |
| +++ b/third_party/libopenjpeg20/pi.c |
| @@ -782,18 +782,18 @@ static void opj_get_all_encoding_parameters( const opj_image_t *p_image, |
| /* use custom size for precincts*/ |
| l_level_no = l_tccp->numresolutions - 1; |
| for (resno = 0; resno < l_tccp->numresolutions; ++resno) { |
| - OPJ_UINT32 l_dx, l_dy; |
| - |
| /* precinct width and height*/ |
| l_pdx = l_tccp->prcw[resno]; |
| l_pdy = l_tccp->prch[resno]; |
| *lResolutionPtr++ = l_pdx; |
| *lResolutionPtr++ = l_pdy; |
| - l_dx = l_img_comp->dx * (1u << (l_pdx + l_level_no)); |
| - l_dy = l_img_comp->dy * (1u << (l_pdy + l_level_no)); |
| /* take the minimum size for l_dx for each comp and resolution*/ |
| - *p_dx_min = (OPJ_UINT32)opj_int_min((OPJ_INT32)*p_dx_min, (OPJ_INT32)l_dx); |
| - *p_dy_min = (OPJ_UINT32)opj_int_min((OPJ_INT32)*p_dy_min, (OPJ_INT32)l_dy); |
| + if (l_pdx + l_level_no < 32) { |
| + *p_dx_min = opj_uint_min(*p_dx_min, l_img_comp->dx * (1u << (l_pdx + l_level_no))); |
| + } |
| + if (l_pdy + l_level_no < 32) { |
| + *p_dy_min = opj_uint_min(*p_dy_min, l_img_comp->dy * (1u << (l_pdy + l_level_no))); |
| + } |
| |
| /* various calculations of extents*/ |
| l_rx0 = opj_int_ceildivpow2(l_tcx0, (OPJ_INT32)l_level_no); |