]> granicus.if.org Git - libjpeg-turbo/commitdiff
Clean up exception handling in the JNI code. The exception is actually not thrown...
authorDRC <dcommander@users.sourceforge.net>
Thu, 14 Aug 2014 17:24:01 +0000 (17:24 +0000)
committerDRC <dcommander@users.sourceforge.net>
Thu, 14 Aug 2014 17:24:01 +0000 (17:24 +0000)
git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/branches/1.3.x@1347 632fc199-4ca6-4c93-a231-07263d6284db

turbojpeg-jni.c

index 6caeba6e01ea7ffe8277ce0c46a3aba408d43305..8e66e28bf95b95675a4384a8a711033ad77a82da 100644 (file)
@@ -127,12 +127,7 @@ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_compress___3
        if(tjCompress2(handle, &srcBuf[y*actualPitch + x*tjPixelSize[pf]], width,
                pitch, height, pf, &jpegBuf, &jpegSize, jpegSubsamp, jpegQual,
                flags|TJFLAG_NOREALLOC)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, dst, jpegBuf, 0);
-               (*env)->ReleasePrimitiveArrayCritical(env, src, srcBuf, 0);
-               jpegBuf=srcBuf=NULL;
                _throw(tjGetErrorStr());
-       }
 
        bailout:
        if(jpegBuf) (*env)->ReleasePrimitiveArrayCritical(env, dst, jpegBuf, 0);
@@ -184,12 +179,7 @@ JNIEXPORT jint JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_compress___3
        if(tjCompress2(handle, &srcBuf[(y*actualStride + x)*sizeof(int)], width,
                stride*sizeof(jint), height, pf, &jpegBuf, &jpegSize, jpegSubsamp,
                jpegQual, flags|TJFLAG_NOREALLOC)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, dst, jpegBuf, 0);
-               (*env)->ReleasePrimitiveArrayCritical(env, src, srcBuf, 0);
-               jpegBuf=srcBuf=NULL;
                _throw(tjGetErrorStr());
-       }
 
        bailout:
        if(jpegBuf) (*env)->ReleasePrimitiveArrayCritical(env, dst, jpegBuf, 0);
@@ -235,12 +225,7 @@ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_encodeYUV___
 
        if(tjEncodeYUV2(handle, srcBuf, width, pitch, height, pf, dstBuf, subsamp,
                flags)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
-               (*env)->ReleasePrimitiveArrayCritical(env, src, srcBuf, 0);
-               dstBuf=srcBuf=NULL;
                _throw(tjGetErrorStr());
-       }
 
        bailout:
        if(dstBuf) (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
@@ -278,12 +263,7 @@ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJCompressor_encodeYUV___
 
        if(tjEncodeYUV2(handle, srcBuf, width, stride*sizeof(jint), height, pf,
                dstBuf, subsamp, flags)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
-               (*env)->ReleasePrimitiveArrayCritical(env, src, srcBuf, 0);
-               dstBuf=srcBuf=NULL;
                _throw(tjGetErrorStr());
-       }
 
        bailout:
        if(dstBuf) (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
@@ -366,10 +346,8 @@ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress
 
        if(tjDecompressHeader2(handle, jpegBuf, (unsigned long)jpegSize,
                &width, &height, &jpegSubsamp)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, src, jpegBuf, 0);
                _throw(tjGetErrorStr());
-       }
+
        (*env)->ReleasePrimitiveArrayCritical(env, src, jpegBuf, 0);  jpegBuf=NULL;
 
        bailif0(_fid=(*env)->GetFieldID(env, _cls, "jpegSubsamp", "I"));
@@ -380,6 +358,7 @@ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress
        (*env)->SetIntField(env, obj, _fid, height);
 
        bailout:
+       if(jpegBuf) (*env)->ReleasePrimitiveArrayCritical(env, src, jpegBuf, 0);
        return;
 }
 
@@ -411,12 +390,7 @@ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress
        if(tjDecompress2(handle, jpegBuf, (unsigned long)jpegSize,
                &dstBuf[y*actualPitch + x*tjPixelSize[pf]], width, pitch, height, pf,
                flags)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
-               (*env)->ReleasePrimitiveArrayCritical(env, src, jpegBuf, 0);
-               dstBuf=jpegBuf=NULL;
                _throw(tjGetErrorStr());
-       }
 
        bailout:
        if(dstBuf) (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
@@ -462,12 +436,7 @@ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress
        if(tjDecompress2(handle, jpegBuf, (unsigned long)jpegSize,
                &dstBuf[(y*actualStride + x)*sizeof(int)], width, stride*sizeof(jint),
                height, pf, flags)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
-               (*env)->ReleasePrimitiveArrayCritical(env, src, jpegBuf, 0);
-               dstBuf=jpegBuf=NULL;
                _throw(tjGetErrorStr());
-       }
 
        bailout:
        if(dstBuf) (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
@@ -511,12 +480,7 @@ JNIEXPORT void JNICALL Java_org_libjpegturbo_turbojpeg_TJDecompressor_decompress
 
        if(tjDecompressToYUV(handle, jpegBuf, (unsigned long)jpegSize, dstBuf,
                flags)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
-               (*env)->ReleasePrimitiveArrayCritical(env, src, jpegBuf, 0);
-               dstBuf=jpegBuf=NULL;
                _throw(tjGetErrorStr());
-       }
 
        bailout:
        if(dstBuf) (*env)->ReleasePrimitiveArrayCritical(env, dst, dstBuf, 0);
@@ -682,7 +646,6 @@ JNIEXPORT jintArray JNICALL Java_org_libjpegturbo_turbojpeg_TJTransformer_transf
                }
        }
 
-       bailif0(jpegBuf=(*env)->GetPrimitiveArrayCritical(env, jsrcBuf, 0));
        for(i=0; i<n; i++)
        {
                int w=jpegWidth, h=jpegHeight;
@@ -692,28 +655,29 @@ JNIEXPORT jintArray JNICALL Java_org_libjpegturbo_turbojpeg_TJTransformer_transf
                if((unsigned long)(*env)->GetArrayLength(env, jdstBufs[i])
                        <tjBufSize(w, h, jpegSubsamp))
                        _throw("Destination buffer is not large enough");
-               bailif0(dstBufs[i]=(*env)->GetPrimitiveArrayCritical(env, jdstBufs[i], 0));
        }
+       bailif0(jpegBuf=(*env)->GetPrimitiveArrayCritical(env, jsrcBuf, 0));
+       for(i=0; i<n; i++)
+               bailif0(dstBufs[i]=(*env)->GetPrimitiveArrayCritical(env, jdstBufs[i], 0));
 
        if(tjTransform(handle, jpegBuf, jpegSize, n, dstBufs, dstSizes, t,
                flags|TJFLAG_NOREALLOC)==-1)
-       {
-               (*env)->ReleasePrimitiveArrayCritical(env, jsrcBuf, jpegBuf, 0);
-               jpegBuf=NULL;
-               for(i=0; i<n; i++)
-               {
-                       (*env)->ReleasePrimitiveArrayCritical(env, jdstBufs[i], dstBufs[i], 0);
-                       dstBufs[i]=NULL;
-               }
                _throw(tjGetErrorStr());
+
+       for(i=0; i<n; i++)
+       {
+               (*env)->ReleasePrimitiveArrayCritical(env, jdstBufs[i], dstBufs[i], 0);
+               dstBufs[i]=NULL;
        }
+       (*env)->ReleasePrimitiveArrayCritical(env, jsrcBuf, jpegBuf, 0);
+       jpegBuf=NULL;
 
        jdstSizes=(*env)->NewIntArray(env, n);
        bailif0(dstSizesi=(*env)->GetIntArrayElements(env, jdstSizes, 0));
        for(i=0; i<n; i++) dstSizesi[i]=(int)dstSizes[i];
 
        bailout:
-       if(jpegBuf) (*env)->ReleasePrimitiveArrayCritical(env, jsrcBuf, jpegBuf, 0);
+       if(dstSizesi) (*env)->ReleaseIntArrayElements(env, jdstSizes, dstSizesi, 0);
        if(dstBufs)
        {
                for(i=0; i<n; i++)
@@ -723,9 +687,9 @@ JNIEXPORT jintArray JNICALL Java_org_libjpegturbo_turbojpeg_TJTransformer_transf
                }
                free(dstBufs);
        }
+       if(jpegBuf) (*env)->ReleasePrimitiveArrayCritical(env, jsrcBuf, jpegBuf, 0);
        if(jdstBufs) free(jdstBufs);
        if(dstSizes) free(dstSizes);
-       if(dstSizesi) (*env)->ReleaseIntArrayElements(env, jdstSizes, dstSizesi, 0);
        if(t) free(t);
        return jdstSizes;
 }