]> granicus.if.org Git - libjpeg-turbo/commitdiff
Work around an issue in Visual C++ 2010 and 2013 that was causing the 256-bit bitmap...
authorDRC <dcommander@users.sourceforge.net>
Sun, 20 Apr 2014 07:22:21 +0000 (07:22 +0000)
committerDRC <dcommander@users.sourceforge.net>
Sun, 20 Apr 2014 07:22:21 +0000 (07:22 +0000)
       delta = cur0 * 2;
       cur0 += delta;          /* form error * 3 */
       errorptr[0] = (FSERROR) (bpreverr0 + cur0);
       cur0 += delta;          /* form error * 5 */
       bpreverr0 = belowerr0 + cur0;
       cur0 += delta;          /* form error * 7 */

Each time cur0 is incremented by delta, the compiled code doubles the value of delta (WTF?!)  Thus, by the time the end of the block is reached, cur0 is equal to 15 times its former self, not 7 times its former self as it should be.  At any rate, it was a lot simpler to just refactor the code so that it uses multiplication.

git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1253 632fc199-4ca6-4c93-a231-07263d6284db

1  2 
ChangeLog.txt
jquant2.c

diff --cc ChangeLog.txt
index 3ec6c18f230c60a67c9082d0ebd71cace703d26f,1012b74cd1a08c70c07cb65fd2b8a1ca1713b239..d376ace7851b9f7e96160937a39760214bf5294e
@@@ -1,20 -1,21 +1,30 @@@
 -1.2.2
++1.3.2
+ =====
 -[1] The tjDecompressToYUV() function now supports the TJFLAG_FASTDCT flag.
++[1] Worked around an issue with Visual C++ 2010 and later that caused incorrect
++pixels to be generated when decompressing a JPEG image to a 256-color bitmap,
++if compiler optimization was enabled when libjpeg-turbo was built.  This caused
++the regression tests to fail when doing a release build under Visual C++ 2010
++and later.
 -[2] The 32-bit supplementary package for amd64 Debian systems now provides
 -symlinks in /usr/lib/i386-linux-gnu for the TurboJPEG libraries in /usr/lib32.
 -This allows those libraries to be used on MultiArch-compatible systems (such as
 -Ubuntu 11 and later) without setting the linker path.
 -[3] Fixed a regression caused by 1.2.1[7] whereby the build would fail with
 -multiple "Mismatch in operand sizes" errors when attempting to build the x86
 -SIMD code with NASM 0.98.
 +1.3.1
 +=====
  
 -[4] Fixed a Huffman encoder bug that prevented I/O suspension from working
 -properly.
 +[1] On Un*x systems, 'make install' now installs the libjpeg-turbo libraries
 +into /opt/libjpeg-turbo/lib32 by default on any 32-bit system, not just x86,
 +and into /opt/libjpeg-turbo/lib64 by default on any 64-bit system, not just
 +x86-64.  You can override this by overriding either the 'prefix' or 'libdir'
 +configure variables.
  
 -[5] Fixed a bug whereby attempting to encode a progressive JPEG with arithmetic
 +[2] The Windows installer now places a copy of the TurboJPEG DLLs in the same
 +directory as the rest of the libjpeg-turbo binaries.  This was mainly done
 +to support TurboVNC 1.3, which bundles the DLLs in its Windows installation.
 +When using a 32-bit version of CMake on 64-bit Windows, it is impossible to
 +access the c:\WINDOWS\system32 directory, which made it impossible for the
 +TurboVNC build scripts to bundle the 64-bit TurboJPEG DLL.
 +
 +[3] Fixed a bug whereby attempting to encode a progressive JPEG with arithmetic
  entropy coding (by passing arguments of -progressive -arithmetic to cjpeg or
  jpegtran, for instance) would result in an error, "Requested feature was
  omitted at compile time".
diff --cc jquant2.c
index 9b060e574cd108c2b3c7fe6d4cdaa8800fb5864c,3952e1c74790d792804e006945fa39470fc4167c..47a1f90aafd455ec4f786fffffc248a69860d49b
+++ b/jquant2.c
@@@ -3,8 -3,8 +3,8 @@@
   *
   * This file was part of the Independent JPEG Group's software:
   * Copyright (C) 1991-1996, Thomas G. Lane.
 - * Modifications:
 + * libjpeg-turbo Modifications:
-  * Copyright (C) 2009, D. R. Commander.
+  * Copyright (C) 2009, 2014, D. R. Commander.
   * For conditions of distribution and use, see the accompanying README file.
   *
   * This file contains 2-pass color quantization (color mapping) routines.