]> granicus.if.org Git - libjpeg-turbo/commitdiff
Make TJCompressor.close() and TJDecompressor.close() idempotent
authorDRC <dcommander@users.sourceforge.net>
Fri, 21 Nov 2014 15:35:33 +0000 (15:35 +0000)
committerDRC <dcommander@users.sourceforge.net>
Fri, 21 Nov 2014 15:35:33 +0000 (15:35 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1420 632fc199-4ca6-4c93-a231-07263d6284db

ChangeLog.txt
java/org/libjpegturbo/turbojpeg/TJCompressor.java
java/org/libjpegturbo/turbojpeg/TJDecompressor.java

index 326ba5d924fd9b104244b79ecc58ef79267d79f4..e366c6db15eb4b31752944c2c0db5869538ff40e 100644 (file)
@@ -28,7 +28,14 @@ about every 25 million iterations.
 [6] Fixed a build issue on OS X PowerPC platforms (md5cmp failed to build
 because OS X does not provide the le32toh() and htole32() functions.)
 
-[7] The TurboJPEG API previously generated an error ("Could not determine
+[7] The close() method in the TJCompressor and TJDecompressor Java classes is
+now idempotent.  Previously, that method would call the native tjDestroy()
+function even if the TurboJPEG instance had already been destroyed.  This
+caused an exception to be thrown during finalization, if the close() method had
+already been called.  The exception was caught, but it was still an expensive
+operation.
+
+[8] The TurboJPEG API previously generated an error ("Could not determine
 subsampling type for JPEG image") when attempting to decompress grayscale JPEG
 images that were compressed with a sampling factor other than 1 (for instance,
 with 'cjpeg -grayscale -sample 2x2').  Subsampling technically has no meaning
index 6fb653f0e79fdd48c1c390ba67eba77d312d72fb..29c8b2abc35786b092c4d97cc02bc02ae8125bc7 100644 (file)
@@ -496,7 +496,8 @@ public class TJCompressor {
    * Free the native structures associated with this compressor instance.
    */
   public void close() throws Exception {
-    destroy();
+    if (handle != 0)
+      destroy();
   }
 
   protected void finalize() throws Throwable {
index ec8ab772949b7dd354c8074ba73e236a5e89aeee..8b98dcfc81a07a9bbb4202495771f8883973e579 100644 (file)
@@ -594,7 +594,8 @@ public class TJDecompressor {
    * Free the native structures associated with this decompressor instance.
    */
   public void close() throws Exception {
-    destroy();
+    if (handle != 0)
+      destroy();
   }
 
   protected void finalize() throws Throwable {