diff -urN -x '*.orig' -x '*.rej' -x '*~' -x '.*' OpenJPEG.orig/libopenjpeg/mqc.c OpenJPEG.patched/libopenjpeg/mqc.c --- OpenJPEG.orig/libopenjpeg/mqc.c 2007-07-17 20:07:22.000000000 -0500 +++ OpenJPEG.patched/libopenjpeg/mqc.c 2007-07-17 20:07:44.000000000 -0500 @@ -507,20 +507,20 @@ int mqc_decode(opj_mqc_t *mqc) { int d; - mqc->a -= (*mqc->curctx)->qeval; - if ((mqc->c >> 16) < (*mqc->curctx)->qeval) { + unsigned int qeval = (*mqc->curctx)->qeval; + mqc->a -= qeval; + qeval <<= 16; + if (mqc->c < qeval) { d = mqc_lpsexchange(mqc); - mqc_renormd(mqc); } else { - mqc->c -= (*mqc->curctx)->qeval << 16; + mqc->c -= qeval; if ((mqc->a & 0x8000) == 0) { d = mqc_mpsexchange(mqc); - mqc_renormd(mqc); } else { - d = (*mqc->curctx)->mps; + return (*mqc->curctx)->mps; } } - + mqc_renormd(mqc); return d; }