You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Damjan Jovanovic (JIRA)" <ji...@apache.org> on 2012/07/22 15:07:34 UTC
[jira] [Resolved] (IMAGING-88) Method lowerBound in
org.apache.commons.imaging.common.itu_t4.T4AndT6Compression has a division
error
[ https://issues.apache.org/jira/browse/IMAGING-88?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Damjan Jovanovic resolved IMAGING-88.
-------------------------------------
Resolution: Fixed
Fix Version/s: 1.0
Patch applied to SVN, thank you for your contribution!
> Method lowerBound in org.apache.commons.imaging.common.itu_t4.T4AndT6Compression has a division error
> -----------------------------------------------------------------------------------------------------
>
> Key: IMAGING-88
> URL: https://issues.apache.org/jira/browse/IMAGING-88
> Project: Commons Imaging
> Issue Type: Bug
> Components: Format: TIFF
> Affects Versions: 1.0
> Reporter: Craig Kelly
> Fix For: 1.0
>
>
> In method lowerBound in the class org.apache.commons.imaging.common.itu_t4.T4AndT6Compression, the binary search loop uses:
> int middle = (first + last) >>> 2;
> To find a mid-point for the search. However, the bit-shift is causing a divide by 4. At best this produces bad results, and at worst causes an infinite loop (which is how I found the error). A simple patch to fix is:
> Index: src/main/java/org/apache/commons/imaging/common/itu_t4/T4AndT6Compression.java
> ===================================================================
> --- src/main/java/org/apache/commons/imaging/common/itu_t4/T4AndT6Compression.java (revision 1363019)
> +++ src/main/java/org/apache/commons/imaging/common/itu_t4/T4AndT6Compression.java (working copy)
> @@ -720,7 +720,7 @@
> int first = 0;
> int last = entries.length - 1;
> do {
> - int middle = (first + last) >>> 2;
> + int middle = (first + last) >>> 1; //2;
> if (entries[middle].value.intValue() <= value
> && ((middle + 1) >= entries.length || value < entries[middle + 1].value
> .intValue())) {
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira