xref: /aosp_15_r20/external/pdfium/third_party/libopenjpeg/0026-use_opj_uint_ceildiv.patch (revision 3ac0a46f773bac49fa9476ec2b1cf3f8da5ec3a4)
1diff --git a/third_party/libopenjpeg/j2k.c b/third_party/libopenjpeg/j2k.c
2index 889c2cfc8..711dd73e8 100644
3--- a/third_party/libopenjpeg/j2k.c
4+++ b/third_party/libopenjpeg/j2k.c
5@@ -2299,10 +2299,8 @@ static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k,
6     }
7
8     /* Compute the number of tiles */
9-    l_cp->tw = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)(l_image->x1 - l_cp->tx0),
10-                                           (OPJ_INT32)l_cp->tdx);
11-    l_cp->th = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)(l_image->y1 - l_cp->ty0),
12-                                           (OPJ_INT32)l_cp->tdy);
13+    l_cp->tw = opj_uint_ceildiv(l_image->x1 - l_cp->tx0, l_cp->tdx);
14+    l_cp->th = opj_uint_ceildiv(l_image->y1 - l_cp->ty0, l_cp->tdy);
15
16     /* Check that the number of tiles is valid */
17     if (l_cp->tw == 0 || l_cp->th == 0 || l_cp->tw > 65535 / l_cp->th) {
18@@ -2319,12 +2317,10 @@ static OPJ_BOOL opj_j2k_read_siz(opj_j2k_t *p_j2k,
19             (p_j2k->m_specific_param.m_decoder.m_start_tile_x - l_cp->tx0) / l_cp->tdx;
20         p_j2k->m_specific_param.m_decoder.m_start_tile_y =
21             (p_j2k->m_specific_param.m_decoder.m_start_tile_y - l_cp->ty0) / l_cp->tdy;
22-        p_j2k->m_specific_param.m_decoder.m_end_tile_x = (OPJ_UINT32)opj_int_ceildiv((
23-                    OPJ_INT32)(p_j2k->m_specific_param.m_decoder.m_end_tile_x - l_cp->tx0),
24-                (OPJ_INT32)l_cp->tdx);
25-        p_j2k->m_specific_param.m_decoder.m_end_tile_y = (OPJ_UINT32)opj_int_ceildiv((
26-                    OPJ_INT32)(p_j2k->m_specific_param.m_decoder.m_end_tile_y - l_cp->ty0),
27-                (OPJ_INT32)l_cp->tdy);
28+        p_j2k->m_specific_param.m_decoder.m_end_tile_x = opj_uint_ceildiv(
29+            p_j2k->m_specific_param.m_decoder.m_end_tile_x - l_cp->tx0, l_cp->tdx);
30+        p_j2k->m_specific_param.m_decoder.m_end_tile_y = opj_uint_ceildiv(
31+            p_j2k->m_specific_param.m_decoder.m_end_tile_y - l_cp->ty0, l_cp->tdy);
32     } else {
33         p_j2k->m_specific_param.m_decoder.m_start_tile_x = 0;
34         p_j2k->m_specific_param.m_decoder.m_start_tile_y = 0;
35@@ -10035,10 +10029,8 @@ static OPJ_BOOL opj_j2k_update_image_dimensions(opj_image_t* p_image,
36             return OPJ_FALSE;
37         }
38
39-        l_img_comp->x0 = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)p_image->x0,
40-                         (OPJ_INT32)l_img_comp->dx);
41-        l_img_comp->y0 = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)p_image->y0,
42-                         (OPJ_INT32)l_img_comp->dy);
43+        l_img_comp->x0 = opj_uint_ceildiv(p_image->x0, l_img_comp->dx);
44+        l_img_comp->y0 = opj_uint_ceildiv(p_image->y0, l_img_comp->dy);
45         l_comp_x1 = opj_int_ceildiv((OPJ_INT32)p_image->x1, (OPJ_INT32)l_img_comp->dx);
46         l_comp_y1 = opj_int_ceildiv((OPJ_INT32)p_image->y1, (OPJ_INT32)l_img_comp->dy);
47
48@@ -11950,10 +11942,8 @@ OPJ_BOOL opj_j2k_get_tile(opj_j2k_t *p_j2k,
49
50         l_img_comp->factor = p_j2k->m_private_image->comps[compno].factor;
51
52-        l_img_comp->x0 = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)p_image->x0,
53-                         (OPJ_INT32)l_img_comp->dx);
54-        l_img_comp->y0 = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)p_image->y0,
55-                         (OPJ_INT32)l_img_comp->dy);
56+        l_img_comp->x0 = opj_uint_ceildiv(p_image->x0, l_img_comp->dx);
57+        l_img_comp->y0 = opj_uint_ceildiv(p_image->y0, l_img_comp->dy);
58         l_comp_x1 = opj_int_ceildiv((OPJ_INT32)p_image->x1, (OPJ_INT32)l_img_comp->dx);
59         l_comp_y1 = opj_int_ceildiv((OPJ_INT32)p_image->y1, (OPJ_INT32)l_img_comp->dy);
60
61@@ -12304,10 +12294,8 @@ static void opj_get_tile_dimensions(opj_image_t * l_image,
62
63     *l_width  = (OPJ_UINT32)(l_tilec->x1 - l_tilec->x0);
64     *l_height = (OPJ_UINT32)(l_tilec->y1 - l_tilec->y0);
65-    *l_offset_x = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->x0,
66-                  (OPJ_INT32)l_img_comp->dx);
67-    *l_offset_y = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->y0,
68-                  (OPJ_INT32)l_img_comp->dy);
69+    *l_offset_x = opj_uint_ceildiv(l_image->x0, l_img_comp->dx);
70+    *l_offset_y = opj_uint_ceildiv(l_image->y0, l_img_comp->dy);
71     *l_image_width = (OPJ_UINT32)opj_int_ceildiv((OPJ_INT32)l_image->x1 -
72                      (OPJ_INT32)l_image->x0, (OPJ_INT32)l_img_comp->dx);
73     *l_stride = *l_image_width - *l_width;
74