diff --git a/libopenjpeg/pi.c b/libopenjpeg/pi.c index e8e33bfe..c726e4b6 100644 --- a/libopenjpeg/pi.c +++ b/libopenjpeg/pi.c @@ -340,12 +340,12 @@ static opj_bool pi_next_cprl(opj_pi_iterator_t * pi) { pi->dx = 0; pi->dy = 0; for (resno = 0; resno < comp->numresolutions; resno++) { - int dx, dy; + int64 dx, dy; res = &comp->resolutions[resno]; - dx = comp->dx * (1 << (res->pdx + comp->numresolutions - 1 - resno)); - dy = comp->dy * (1 << (res->pdy + comp->numresolutions - 1 - resno)); - pi->dx = !pi->dx ? dx : int_min(pi->dx, dx); - pi->dy = !pi->dy ? dy : int_min(pi->dy, dy); + dx = comp->dx * (((int64) 1) << (res->pdx + comp->numresolutions - 1 - resno)); + dy = comp->dy * (((int64) 1) << (res->pdy + comp->numresolutions - 1 - resno)); + pi->dx = !pi->dx ? dx : pi->dx < dx ? pi->dx : dx; + pi->dy = !pi->dy ? dy : pi->dy < dy ? pi->dy : dy; } if (!pi->tp_on){ pi->poc.ty0 = pi->ty0; diff --git a/libopenjpeg/pi.h b/libopenjpeg/pi.h index cf9135fd..3e52e357 100644 --- a/libopenjpeg/pi.h +++ b/libopenjpeg/pi.h @@ -93,8 +93,8 @@ typedef struct opj_pi_iterator { int numcomps; /** Components*/ opj_pi_comp_t *comps; - int tx0, ty0, tx1, ty1; - int x, y, dx, dy; + int tx0, ty0, tx1, ty1; + int64 x, y, dx, dy; } opj_pi_iterator_t; /** @name Exported functions */