summaryrefslogtreecommitdiff
path: root/third_party/libopenjpeg20/0030-undefined-shift-opj_get_all_encoding_parameters.patch
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/libopenjpeg20/0030-undefined-shift-opj_get_all_encoding_parameters.patch')
-rw-r--r--third_party/libopenjpeg20/0030-undefined-shift-opj_get_all_encoding_parameters.patch29
1 files changed, 29 insertions, 0 deletions
diff --git a/third_party/libopenjpeg20/0030-undefined-shift-opj_get_all_encoding_parameters.patch b/third_party/libopenjpeg20/0030-undefined-shift-opj_get_all_encoding_parameters.patch
new file mode 100644
index 0000000000..3ba3a2f5b0
--- /dev/null
+++ b/third_party/libopenjpeg20/0030-undefined-shift-opj_get_all_encoding_parameters.patch
@@ -0,0 +1,29 @@
+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);