Throw idiomatic unchecked exceptions from the Java classes and JNI wrapper if there is an unrecoverable error caused by incorrect API usage (such as illegal arguments, etc.), and throw Errors if there is an unrecoverable error at the C level (such as a failed malloc() call.)
Change the behavior of the bailif0() macro in the JNI wrapper so that it doesn't throw an exception for an unexpected NULL condition. In fact, in all cases, the underlying JNI API function (such as GetFieldID(), etc.) will throw an Error on its own whenever it returns NULL, so our custom exceptions were never being thrown in that case anyhow. All we need to do is just detect the error and bail out of the C code. This also corrects a couple of formatting issues (semicolons aren't needed at the end of class definitions, and @Override should be specified for the methods we're overriding from super-classes, so the compiler can sanity-check that we're actually overriding a method and not declaring a new one.) git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@1595 632fc199-4ca6-4c93-a231-07263d6284db
This commit is contained in:
@@ -87,9 +87,8 @@ public final class TJ {
|
||||
* @return the MCU block width for the given level of chrominance
|
||||
* subsampling.
|
||||
*/
|
||||
public static int getMCUWidth(int subsamp) throws Exception {
|
||||
if (subsamp < 0 || subsamp >= NUMSAMP)
|
||||
throw new Exception("Invalid subsampling type");
|
||||
public static int getMCUWidth(int subsamp) {
|
||||
checkSubsampling(subsamp);
|
||||
return mcuWidth[subsamp];
|
||||
}
|
||||
|
||||
@@ -108,9 +107,8 @@ public final class TJ {
|
||||
* @return the MCU block height for the given level of chrominance
|
||||
* subsampling.
|
||||
*/
|
||||
public static int getMCUHeight(int subsamp) throws Exception {
|
||||
if (subsamp < 0 || subsamp >= NUMSAMP)
|
||||
throw new Exception("Invalid subsampling type");
|
||||
public static int getMCUHeight(int subsamp) {
|
||||
checkSubsampling(subsamp);
|
||||
return mcuHeight[subsamp];
|
||||
}
|
||||
|
||||
@@ -217,9 +215,8 @@ public final class TJ {
|
||||
*
|
||||
* @return the pixel size (in bytes) for the given pixel format.
|
||||
*/
|
||||
public static int getPixelSize(int pixelFormat) throws Exception {
|
||||
if (pixelFormat < 0 || pixelFormat >= NUMPF)
|
||||
throw new Exception("Invalid pixel format");
|
||||
public static int getPixelSize(int pixelFormat) {
|
||||
checkPixelFormat(pixelFormat);
|
||||
return pixelSize[pixelFormat];
|
||||
}
|
||||
|
||||
@@ -239,9 +236,8 @@ public final class TJ {
|
||||
*
|
||||
* @return the red offset for the given pixel format.
|
||||
*/
|
||||
public static int getRedOffset(int pixelFormat) throws Exception {
|
||||
if (pixelFormat < 0 || pixelFormat >= NUMPF)
|
||||
throw new Exception("Invalid pixel format");
|
||||
public static int getRedOffset(int pixelFormat) {
|
||||
checkPixelFormat(pixelFormat);
|
||||
return redOffset[pixelFormat];
|
||||
}
|
||||
|
||||
@@ -261,9 +257,8 @@ public final class TJ {
|
||||
*
|
||||
* @return the green offset for the given pixel format.
|
||||
*/
|
||||
public static int getGreenOffset(int pixelFormat) throws Exception {
|
||||
if (pixelFormat < 0 || pixelFormat >= NUMPF)
|
||||
throw new Exception("Invalid pixel format");
|
||||
public static int getGreenOffset(int pixelFormat) {
|
||||
checkPixelFormat(pixelFormat);
|
||||
return greenOffset[pixelFormat];
|
||||
}
|
||||
|
||||
@@ -283,9 +278,8 @@ public final class TJ {
|
||||
*
|
||||
* @return the blue offset for the given pixel format.
|
||||
*/
|
||||
public static int getBlueOffset(int pixelFormat) throws Exception {
|
||||
if (pixelFormat < 0 || pixelFormat >= NUMPF)
|
||||
throw new Exception("Invalid pixel format");
|
||||
public static int getBlueOffset(int pixelFormat) {
|
||||
checkPixelFormat(pixelFormat);
|
||||
return blueOffset[pixelFormat];
|
||||
}
|
||||
|
||||
@@ -511,4 +505,15 @@ public final class TJ {
|
||||
static {
|
||||
TJLoader.load();
|
||||
}
|
||||
};
|
||||
|
||||
private static void checkPixelFormat(int pixelFormat) {
|
||||
if (pixelFormat < 0 || pixelFormat >= NUMPF)
|
||||
throw new IllegalArgumentException("Invalid pixel format");
|
||||
}
|
||||
|
||||
private static void checkSubsampling(int subsamp) {
|
||||
if (subsamp < 0 || subsamp >= NUMSAMP)
|
||||
throw new IllegalArgumentException("Invalid subsampling type");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user